如果可能的话,我正在尝试将这个for循环转换为“列表理解”格式:
此循环将0添加到二维列表中
test_list = [['string1'],['string2'],['string3']]
for i in range(len(test_list)):
test_list[i].insert(1, 0)
输出:
test_list = [['string1',0],['string2',0],['string3',0]]
我试过了,但由于某种原因,它不起作用。
test_list = [test_list[i].insert(1, 0) for i in range(len(test_list))]
发布于 2018-06-14 04:14:16
它不起作用,因为list.insert()
就地修改了列表并返回None
,因此您最终会得到一个None
s的列表,它是所有.insert()
s的返回值。
列表理解格式不能满足您的需要,因为它是为创建新列表而设计的,而您似乎想要就地修改列表。如果您想创建新列表,您可以使用以下命令:
test_list = [sublist + [0] for sublist in test_list]
这是因为lists上的+
运算符会创建并返回一个新列表。
发布于 2018-06-14 04:14:14
你的问题是“原因是什么?”
这条线
test_list = [test_list[i].insert(1, 0) for i in range(len(test_list))]
表示“列出该表达式的返回值”。
表达式[].insert()
的返回值为None。test_list
将被设置为None列表。
https://stackoverflow.com/questions/50845466
复制相似问题