在我看来,以下代码应该只是重建输入列表,而是获得该列表的三个副本的列表。
outlist = []
inputList = ["input1", "input2", "input3"]
def bar(input, outlist):
temp = input
outlist.append(temp)
return outlist
r1 = [bar(i, outlist) for i in inputList]
但我的结果
r1
Out[28]:
[['input1', 'input2', 'input3'],
['input1', 'input2', 'input3'],
['input1', 'input2', 'input3']]
我认为这是我的意思:
那么我在这里缺少什么/不理解?为什么我会得到三个相同列表的列表,而不仅仅是这些列表中的一个?很抱歉,如果之前已经询问过,但如果有,我无法找到它(可能是因为我没有找到正确的术语)
编辑:对不起,如果我不清楚。我的目标不是创建列表的副本,我只是认为这将是一个简单的示例来演示列表结果列表。请不要将此标记为该问题的副本,因为列表复制不是问题的主题。Edit2:我想要的输出: ['input1','input2','input3']
换句话说,我想创建一个列表推导,它遍历列表,对该列表中的项执行某些操作,并将该项追加到作为输出的列表中。这是另一个例子,只是要明确复制原始列表不是我的观点:
outlist = []
inputList = [1, 2, 3]
def bar(input, outlist):
temp = input + 1
outlist.append(temp)
return outlist
r1 = [bar(i, outlist) for i in inputList]
r1
Out[31]:
[[2, 3, 4], [2, 3, 4], [2, 3, 4]]
期望的输出:
[2,3,4]
对不起,如果我在这里很厚......
答案 0 :(得分:1)
编辑:
In[71]: def bar(item):
...: return item + 1
...:
In[72]: [bar(i) for i in [1, 2, 3]]
Out[72]: [2, 3, 4]
In[73]: [i + 1 for i in [1, 2, 3]]
Out[73]: [2, 3, 4]