我需要从一个包含列表的列表中将每个元素乘以 2。因此在另一个列表中创建 3 个新列表。
listao = [['lista1', 'agora', 'fui', 'a1'],
['lista2', '10', '30', 'v'],
['lista3', '5', '4', 'a3']]
输出:
[['lista1', 'agora', 'fui', 'a1'],
['lista2', '10', '30', 'v'],
['lista3', '5', '4', 'a3']]
我正在使用这段代码:
在这段代码中,我得到了乘法的结果,但我不知道如何将列表分开。
novalista = []
for i in listao:
for j in i:
x = j*2
novalista.append(x)
输出:
['lista1lista1', 'agoraagora', 'fuifui', 'a1a1', 'lista2lista2', '1010', '3030', 'vv', 'lista3lista3', '55', '44', 'a3a3']
但我需要这个结果:
[['lista1lista1', 'agoraagora', 'fuifui', 'a1a1'],
['lista2lista2', '1010', '3030', 'vv'],
['lista3lista3', '55', '44', 'a3a3']]
回答1
你可以这样做:
novalista = []
for i in range(len(listao)):
novalista.append([])
for j in listao[i]:
x = j * 2
novalista[i].append(x)
我对其进行了更改,以便每次在 listao
变量中从一个列表转换到另一个列表时附加一个列表
那应该工作
回答2
您可以使用列表推导:
[[item * 2 for item in sublist] for sublist in listao]
这输出:
[
['lista1lista1', 'agoraagora', 'fuifui', 'a1a1'],
['lista2lista2', '1010', '3030', 'vv'],
['lista3lista3', '55', '44', 'a3a3']
]
回答3
对这个问题大声笑,对第一条评论也有另一个问题。显然,这份名单来自巴西。但无论如何。
不确定意图是什么,但您需要了解的最重要方面是您正在循环的内容。
外部 for (for i in listao) 您正在遍历 listao 中包含的每个列表。内部 for (for j in i) 您正在遍历 listao 中包含的每个列表中的每个项目。
因此,如果我们将编写的代码翻译成有意义的英语,它会说“遍历每个列表,在每个列表上循环遍历每个项目,将其乘以 2 并将其附加到此列表中。”
与上一个答案类似,但不完全(在我看来),您需要在循环中添加一个子元素,以便将该子元素而不是每个项目附加到主列表中。
new_listao = []
for item in listao:
sub_list = []
for element in item:
sub_list.append(element*2)
new_listao.append(sub_list)
在列表理解中可能有一种更pythonic的方式来处理这个问题(如果你还没有的话,请阅读这个),但如果它值得的话,它需要一些思考。见机械猪的评论。