python - 从带有列表的列表中,我需要操作元素并使用列表构建另一个列表

我需要从一个包含列表的列表中将每个元素乘以 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的方式来处理这个问题(如果你还没有的话,请阅读这个),但如果它值得的话,它需要一些思考。见机械猪的评论。

相似文章

search - Binary Search 复杂性

binarysearch将n个元素的数组作为用户输入的时间复杂度是多少?由于binarysearch的时间复杂度是O(logn)而将数组作为用户输入的时间复杂度是O(n)...

最新文章