python基础知识 列表解析

  • 列表解析是将一个列表(实际上适用于任何可迭代的对象)转换为另外一个列表,需要符合一定的条件,才能添加到新的列表中。

列表解析语法如下:

[expression for iter_var in iterable] 
[expression for iter_var in iterable if cond_expr]

如普通方法实现1-10的平方:

L=[]
for i in range(1,11):
    L.append(i**2)
print(L)

>>>[1,2,9,16,25,36,49,64,81,100]

使用列表的方式实现:

L=[i**2 for i in range(1,11)]
print(L)


>>>[1,2,9,16,25,36,49,64,81,100]

  • 再举一个列子:

列出1-10中大于等于4的数字的平方,普通方法。

L=[]
for i in range(1,11):
    if i >=4:
        L.append(i**2)
print(L)


>>>[16, 25, 36, 49, 64, 81, 100]

使用列表解析实现:

L=[i**2 for i in range(1,11) if i>=4]
print(L)

>>>[16, 25, 36, 49, 64, 81, 100]

  • 最后一个列子:

套嵌循环,实现两个列表中的元素逐一配对。

普通方法:

L1=["x","y","z"]
L2=[1,2,3]
L3=[]
for a in L1:
    for b in L2:
    L3.append((a,b))
print(L3)

>>>[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

列表解析:

L1=["x","y","z"]
L2=[1,2,3]
L3=[(a,b) for a in L1 for b in L2]
print(L3)


>>>[('x', 1), ('x', 2), ('x', 3), ('y', 1), ('y', 2), ('y', 3), ('z', 1), ('z', 2), ('z', 3)]

知识补充:

如果要在列表解析中处理套嵌循环,请记住for循环句子的顺序与普通方法中的for的循环顺序是一致的。

  • 当然,python中除了列表解析,也存在集合解析还有字典解析。(set comprehension and dict comprehension)

集合解析如下:(提取序列中每个单词的首字母,创建一个集合set.)

first_letters=set()
for w in words:
	first_letters.add(w[0])

集合解析:

first_letters ={ w[0] for w in words}

  • 字典解析

列如,将原来的键与值互换,从而创建一个新的字典。

first_letters =[ w[0] for w in words]

flipped = {}
for key,value in original.iters():
flipped[value] = key

#字典解析

flipped = (value:key for key,value in original.iters())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值