python 列表生成式 语法 您所在的位置:网站首页 python列表生成式原理 python 列表生成式 语法

python 列表生成式 语法

2024-07-16 00:56| 来源: 网络整理| 查看: 265

列表生成式

简单的说,列表生成式就是快速,有B格的生成一个列表,生成列表之后,可以进行相应操作,转换为别的数据形式。

列表生成式 是写在 [] 中的式子,结果会输出一个列表。 将要生成的数据形式的表达式放在前面,后面跟上 for 循环,如果有其他条件进行筛选,还可以跟上 if else 进行操作。 表达式可以是任何数据类型,最后都会转为列表类型。 能够进行两层循环 xxx for xx in xx for xx in xx ,嵌套循环。 注意for中是可以有多个变量的,在dict字典类型遍历的时候尤其明显。 注意只能是一个表达式,不能是多个变量,除非组成一个表达式 实施步骤就是使用循环变量的每一个变量拿去实施前方的表达式,以此生成新的列表 有if 的时候 [最终表达式 - (范围选择 - 范围过滤)] 当同时有 if 和 else 时,列表生成式构造为 [最终表达式 - 条件分支判断 - 范围选择] # 列表生成式 用来创建list的生成式 # 生成 【1,2,3,4,5,6,7,。。。10】 可以用 range(1,11) print(list(range(1,11))) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] l = [] for i in range(1,11): l.append(i*i) print(l) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

print([x * x for x in range(1,11)]) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 使用[],并把奥生成的内容 放在前面 然后使用 for进行循环 print([y for y in range(1,22)]) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]

# for 后面还可以加上 if 判断 print([x for x in range(1,10) if x%2 == 0]) # [2, 4, 6, 8]

l = [] for x in range(1,10): if x %2 == 0: l.append(x)

print(l) # [2, 4, 6, 8] 类比如下

# 还可以使用两层循环 嵌套循环 print([m+n for m in ‘ABC’ for n in ‘xyz’] ) #[‘Ax’, ‘Ay’, ‘Az’, ‘Bx’, ‘By’, ‘Bz’, ‘Cx’, ‘Cy’, ‘Cz’] a = [m+n for m in ‘ABC’ for n in ‘xyz’] # print(m) # print(n) 内部定义的变量 相当于是不存在的 循环变量 print(a) #[‘Ax’, ‘Ay’, ‘Az’, ‘Bx’, ‘By’, ‘Bz’, ‘Cx’, ‘Cy’, ‘Cz’]

print([(m,n) for m in ‘ABC’ for n in ‘xyx’]) #[(‘A’, ‘x’), (‘A’, ‘y’), (‘A’, ‘x’), (‘B’, ‘x’), (‘B’, ‘y’), (‘B’, ‘x’), (‘C’, ‘x’), (‘C’, ‘y’), (‘C’, ‘x’)] print([set(m) for m in ‘abc’]) # [{‘a’}, {‘b’}, {‘c’}] # 那具体什么表达式就算看自己了

# for 循环可以使用多个变量 d = {‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ } for k,v in d.items(): print(k,v)

a = [k + ‘=’ + 'v ’ for k,v in d.items()] print(a) #['x=v ', 'y=v ', 'z=v '] L = [‘Hello’, ‘World’, ‘IBM’, ‘Apple’] l = [s.lower() for s in L] print(l) #[‘hello’, ‘world’, ‘ibm’, ‘apple’] print(type(l))

# q其实什么类型都可以用, 只不过最后返回的是list的样式

# 列表生成式 使用 if else y = [0 if x%2 == 0 else x for x in range(1,10)] # if 成立使用 前面的表达式,不成立使用x在这里插入代码片

y = [ 0 for x in range[1,10] if x %2 ==0 else x] # ^ #SyntaxError: invalid syntax 报错 # else 必须写在前面

set生成式/字典

与 上述列表生成式一样,只要括号变为 {} 即可,注意 set集合是无序排列; 元组不行哦!

# 创建集合 set4 = {num for num in range(1,10) if(num %2 ==0)} print(set4,type(set4)) #{8, 2, 4, 6} 输出也是无序列的

t= (num for num in range(1,10) if(num %2 ==0)) print(t,type(t)) # items3 = {num: num ** 2 for num in range(1, 10)} print(items3)#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

if else 三元表达式

输出一 if 表达式一 else 表达式二 如果表达式一为True,那么就输出 输出一的内容,如果为False,就输出表达式二的内容。

# if else 三元 def gcd (x,y): #(x,y) = (y,x) # 赋值 求出最大值 判断两个数值的大小 (x,y) = (y,x) if x>y else (x,y) # 就算x >y 的时候 (x,y) = (y,x) 否则惠对调 # y是最大的值 因该遍历最小的值 for i in range(x,0,-1): if(x % i == 0 and y % i ==0): return i def lcm(x,y): return x*y//gcd(x,y)

print(True if 10%2 ==0 else False ) #True print(‘This is True’ if 10%2 ==0 else False ) #This is True



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有