如何将这个for循环转换为列表理解?
在:
docs = [['a'], ['b']]
i=0
for each in docs:
print(each.insert(0, str(i)))
i+=1
print(docs)
退出:
[['0', 'a'], ['1', 'b']]
答案 0 :(得分:1)
这取决于您要新列表还是对旧列表进行突变:
这将使旧列表发生变异,但仅是副作用,“返回”列表是错误的:
>>> x = [['a'],['b']]
>>> [ l.insert(0,str(i)) for i,l in enumerate(x)]
[None, None]
>>> x
[['0', 'a'], ['1', 'b']]
此问题可以解决:
>>> x = [['a'],['b']]
>>> [ l.insert(0,str(i)) or l for i,l in enumerate(x)]
[['0', 'a'], ['1', 'b']]
>>> x
[['0', 'a'], ['1', 'b']]
>>>
或者一个人可以生成一个新列表而不改变旧列表:
>>> y = [['a'],['b']]
>>> [ [str(i)]+y[i] for i in range(len(y))]
[['0', 'a'], ['1', 'b']]
>>> y
[['a'], ['b']]