首页 > 其他分享 >10公共操作与推导式

10公共操作与推导式

时间:2023-04-13 09:34:05浏览次数:42  
标签:10 推导 list 列表 公共 print 元组 data 字典

公共操作与推导式

公共操作

操作方法 功能 描述 操作类型
+ 合并 将两个相同类型序列进行连接 字符串、列表、元组
* 复制 将里面的数据进行复制 字符串、列表、元组
len 获取序列长度 查看序列长度 字符串、列表、元组、字典,集合
reversed 倒置 将容器里面的数据倒置 字符串、列表、元组、字典
max, min 最大最小值 求容器数据的最大最小值 字符串、列表、元组、字典(key),集合
sum 求和 将容器的数据求和 列表、元组、字典(key,其为字符串不能使用),集合
enumerate 索引映射 将索引映射给容器里面的数据 列表、元组、或字符串
in, not in 是否存在 判断数据是否存在于容器内 字符串、列表、元组、字典,集合
del 删除 删除变量或者指定容器内数据 变量,容器里面的值
# reversed   倒置         将容器里面的数据倒置        字符串、列表、元组、字典
l1 = [1, 2, 3]
print(reversed(l1))     # <list_reverseiterator object at 0x0000022CE5786A40>
# 可以转为列表使用或者for循环使用
print(list(reversed(l1)))  # [3, 2, 1]
for i in reversed(l1):
    print(i)
# 3
# 2 
# 1

# enumerate  索引映射      索引映射给容器里面的数据    列表、元组、或字符串
l1 = ['a', 'b', 'c']
# 转换为常见数据类型或for循环使用
print(list(enumerate(l1)))     # [(0, 'a'), (1, 'b'), (2, 'c')]
for index, data in enumerate(l1, start=0):	# start = 开始的索引值(不写也可,默认为0)
    print(index, data)
# 0 a
# 1 b
# 2 c

容器类型的转换

  • 所有数据类型都可以转换为字符串
  • 转换为集合的时候需要注意数据的去重
  • 字典数据转换是需要注意按照key还是value转换
# 字典转为列表
goods = {"name1": "可乐", "name2": "雪碧", "name3": "炸鸡"}
list1 = list(goods)
print(list1)  # ['name1', 'name2', 'name3']   所有的key值转换成了列表
list2 = list(goods.values())
print(list2)  # ['可乐', '雪碧', '炸鸡']  所有的value值转换成了列表

# 列表转字典
# 列表是不能够直接dict转换成字典
# 1)嵌套列表转字典
a = ['可乐', '雪碧']
b = ['3元', '5元']
c = [a, b]  # 嵌套的形式转换
print(c)    # [['可乐', '雪碧'], ['3元', '5元']]
print(dict(c))  # {'可乐': '雪碧', '3元': '5元'}
# ps:若列表长度不一致,会报错

# 2)使用zip()函数将列表转换成字典
a = ['可乐', '雪碧', '炸鸡']
b = ['3元', '5元']
c = zip(a, b)
print(c)    # <zip object at 0x0000010FC5DD0040>
print(list(c))  # [('可乐', '3元'), ('雪碧', '5元')]  若长度不一样,多出的元素会不显示。
print(dict(c))  # {'可乐': '3元', '雪碧': '5元'}  若长度不一样,多出的元素会不显示。

列表推导式和三元表达式

# 列表推导式
# 代码简写,增加运行效率  减少代码可读性,难理解

# 普通写法
list_data = []
for i in range(10):
    list_data.append(i)
print(list_data)

# 推导式写法 不是所有代码都可以简写为推导式,只有一种固定操作
# 创建列表,循环数据,添加数据(append),没有其他操作
list_data = [i for i in range(10)]
print(list_data)


# 普通写法
list_data = []
for i in range(10):
    if i % 2 == 0:
        list_data.append(i)

 print(list_data)

# 创建列表,循环数据,添加数据位置永远在最前面 if(多个也可以,但不建议,可读性太差)放后面
list_data = [i for i in range(10) if i % 2 == 0]
print(list_data)

# 三元表达式

# 普通写法
age = 16
if age > 18:
    print("成年")
else:
    print("未成年")

# 三元表达式的写法
age = 16
print("成年") if age > 18 else print("未成年")

# 普通写法,if分支语句种含有赋值
age = 16
if age > 18:
    data = 1
else:
    data = 0

print(data)

# if分支语句种含有赋值的三元表达式写法
data = 1 if age > 18 else 0
print(data)

# 列表推导式与三元表达式

# 普通写法
list_data = []
for i in range(10):
    if i % 2 == 0:
        list_data.append(i)
    else:
        list_data.append((str(i)))

print(list_data)
# 列表推导式与三元表达式结合使用
list_data = [i if i % 2 == 0 else str(i) for i in range(10)]
 print(list_data)

ps:一般使用较多的就是列表创建时的列表推导式,其他不推荐使用,代码可读性太差,只需要认识其表达含义即可。

标签:10,推导,list,列表,公共,print,元组,data,字典
From: https://www.cnblogs.com/daguo118/p/17312219.html

相关文章

  • mysql主从1062主键冲突跳过错误
    1062错误——主键冲突,出现这种情况就是从库出现插入操作,主库又插入相同的数据,iothread没问题,sqlthread出错处理此种错误一般有两种思路:1、直接跳过错误执行语句2、找到错误执行语句,修复主库2数据https://www.cndba.cn/leo1990/article/2957https://www.cndba.cn/leo1990/articl......
  • 组件公共状态管理react-redux
    知乎日报项目中,公共状态使用了redux和react-redux,记录学习的知识redux工程化其实就是按模块划分,在开发中能更好的理解和维护,因此该项目将状态管理划分为如下的模块:store用作存放状态管理的文件夹action是store中数据的来源,actions文件夹用来管理派发行为对象的,index......
  • 【LeeCode】1035. 不相交的线
    【题目描述】在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i]==nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个......
  • 10.【RabbitMQ实战】- RabbitMQ集群
    搭建集群镜像队列默认情况下node1创建的队列不会同步到node2上此时如果已经发送到了一条消息到node1上的队列,该队列并不会备份到node2上此时node1宕机并重启,该消息会丢失,配置对应策略可保证集群上队列备份并且消息不丢失负载均衡生产者给node1发消息,此时node1宕机,但是......
  • Lecture#10 Sorting & Aggregation Algorithms
    接下来将学习使用我们现在学习的DBMS组件来执行查询。我们今天要讨论的算法都是基于Disk的,即查询的中间结果也需要存储到磁盘中。我们需要使用BufferPool去实现这些算法,要最大化磁盘连续I/O。QueryPlan:算子组织成树形结构,数据从叶子节点流向根节点,根节点的输出就是查......
  • GnuTLS recv error (-110): The TLS connection was non-properly terminated问题的解
    1. sudoapt-getupdate2.sudoapt-getinstallbuild-essentialfakerootdpkg-dev3.sudoapt-getbuild-depgit4.mkdir~/git-openssl5.cd~/git-openssl6apt-getsourcegit ......
  • 最近公共祖先
    #include<iostream>#include<vector>#include<string.h>usingnamespacestd;constintN=5e5+10,M=N*2;typedefpair<int,int>PII;intn,m,root;intp[N];intans[N];inth[N],e[M],ne[M],idx;vector<PII>query[N];boolst[N]......
  • 4-20ma输入0-10v输出模拟量电流转换电压隔离模块
    主要特性:⑴精度等级:0.1级、0.2级、0.5级。产品出厂前已检验校正,用户可以直接使用⑵辅助电源:5V/12V/15V/24VDC或者220VAC(范围±10%)⑶国际标准二路信号输入:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等⑷二路输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等,具有高负载能力⑸全量......
  • win10远程桌面连接,使用正确的用户名和密码仍然不能成功连接
    最近笔记本重置后,台式使用“远程桌面连接”远程笔记本失败了,总是提示“登录没有成功”。 开始自查:win10专业版,允许远程的相关设置也都开了,连接的ip正确,也没问题。因为我的笔记本用户是用微软账户登录的,远程时用户名和密码也要用微软用户名和密码(不是那个PIN码)。再三确认用户名......
  • 5752: 最长公共子序列 动态规划
    描述 一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1,x2,…,xm>,则另一序列Z=<z1,z2,…,zk>是X的子序列是指存在一个严格递增的下标序列<i1,i2,…,ik>,使得对于所有j=1,2,…,k有:  Xij=Zj例如,序列Z=<B,C,D,B>是序列X=<A,B,C,B,D,A,B>的子......