本文目录一览:
python 嵌套list读取
b1=[[2]*3]*2
b2=[[2,2,2],[2,2,2]]
这个两个定义的变量其实是不一样的
b2
一个 list,包含两个 list 元素。
b1
是 1 个 list 元素的两个浅拷贝,可以理解成两个指向 [2]*3
的指针。
出现这种问题,实际上理解的误区,[2]*3
等于 [2,2,2]
,就想当然的把 [[2]*3]*2
等于 [[2,2,2], [2,2,2]]
。其实 [[]]
是一个 list 的浅拷贝(或者理解成指向 list 指针)。
更详细的可以看下 Python 的文档,里面有说明。
python 嵌套list
def iseven(l):
for i in l:
if i%2:
return False
return True
def only_evens(ll):
r = []
for i in ll:
if iseven(i):
r.append(i)
return r
print only_evens([[1, 2, 4], [4, 0, 6], [22, 4, 3], [2]])
Python 2.7 执行结果:
[[4, 0, 6], [2]]
其中 iseven
函数判断 list 是不是都是偶数。
Python list 生成式(推导式list comprehension)中嵌套if else
如果按中文习惯写嵌套列表生成式可能写出如下的错误语法。
Python 的语法是按英文阅读方式设计的,因此,正常的方式应该是:
或者用更简洁的形式 [false, true][condition]
是语法。
通过示例学习 Python 列表推导。
if/else in Python's list comprehension?
python one-line list comprehension: if-else variants
if else in a list comprehension [duplicate]
关于Python列表嵌套问题
这个叫元组的拆包或解包。
list1
迭代返回的是元组,那么 for
循环内就是:
m, n = ('c', 1)
m, n = ('Python', 2)
...