从for循环中添加列表中的列表

时间:2019-09-17 11:14:15

标签: list for-loop append python-3.7

你好Stackoverflowers

我的问题: 一个for循环(j),它循环3次,每次我将一个值与append()相加。此for循环放置在另一个for循环(i)中。在这个for循环中,该循环也循环了三次,我使用append()将for循环(j)中的列表添加到第二个列表中。当我打印第二个列表时,我看到的结果是第三个周期中添加的第一个列表的结果的三倍。

list_batteries = [ 50,  75, 100]
list_chargers  = [100, 250, 500]

list_results   = []
list_temp = []

for i in range(len(list_batteries)):
    list_temp.clear()
    for j in range(len(list_chargers)):
        list_temp.append(list_chargers[j] / list_batteries[i])
    list_results.append(list_temp)

print(list_results)

print(list_results)给我:

[[1.0, 2.5, 5.0], [1.0, 2.5, 5.0], [1.0, 2.5, 5.0]]

但是我想要

[[2.0, 5.0, 10.0], [1.3333333333333333, 3.3333333333333335, 6.666666666666667], [1.0, 2.5, 5.0]]

因此,我可以使用list_results[...][...]获得一个值。

如果有人能向我解释为什么我没有得到预期的结果以及我应该如何编写代码,我将非常感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

i的第一个循环之后,问题出在这一行:

list_temp.clear()

此行不仅清除list_temp,而且清除list_batteries。这就是为什么您总是要同时使用两个明确的列表来开始新的迭代的原因。

我承认我不知道为什么,但是将list_temp重新分配给[]而不是调用clear方法非常有效:

list_batteries = [50, 75, 100]
list_chargers = [100, 250, 500]

list_results = []
list_temp = []

for i in range(len(list_batteries)):
    list_temp = [] #MODIFY HERE
    for j in range(len(list_chargers)):
        list_temp.append(list_chargers[j] / list_batteries[i])
    list_results.append(list_temp)

print(list_results)

答案 1 :(得分:0)

在尝试将列表追加到列表时,请使用: list_results.append(list(list_temp)),而不是list_results.append(list_temp)

并取消list_temp * = 0

list_batteries = [ 50,  75, 100]
list_chargers  = [100, 250, 500]

list_results   = []
list_temp = []

for i in range(len(list_batteries)):
    list_temp *=0
    for j in range(len(list_chargers)):
        list_temp.append(list_chargers[j] / list_batteries[i])
    list_results.append(list(list_temp))

print(list_results)
相关问题