列表理解返回相同列表的列表

2024-04-19 16:34:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在我看来,下面的代码应该只是重建输入列表,但是我得到的是一个包含该列表三个副本的列表。你知道吗

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']]

这是我的建议,我认为这样做可以:

  1. 创建空列表
  2. 对于输入列表中的每个项目,将其附加到大纲视图。你知道吗
  3. 完成inputList中的所有三个项目后返回结果。你知道吗

那么我在这里遗漏了什么/不明白什么呢?为什么我会得到一个由三个相同的列表组成的列表,而不是一个单独的列表?抱歉,如果以前有人问过这个问题,但如果有,我找不到它(可能是因为我没有搜索正确的术语)

编辑:对不起,如果我不清楚。我的目标不是创建一个列表的副本,我只是想用一个简单的例子来演示列表的结果。请不要将此标记为问题的副本,因为列表副本不是问题的主题。你知道吗

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]

抱歉,我在这里太厚了。。你知道吗


Tags: 列表forinputreturndef副本bartemp
1条回答
网友
1楼 · 发布于 2024-04-19 16:34:06

编辑:

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]

相关问题 更多 >