为啥我不能从将一个列表附加到另一个列表中获取元素

Posted

技术标签:

【中文标题】为啥我不能从将一个列表附加到另一个列表中获取元素【英文标题】:why I can not get the elements from appending one list into another为什么我不能从将一个列表附加到另一个列表中获取元素 【发布时间】:2020-08-04 10:40:22 【问题描述】:

我被要求将一个列表附加到另一个空列表中(在原始列表中进行了一些更改) 我尝试了以下代码它显示错误的输出

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames=[]
change= [n.lower() for n in names]
for n in names:
    username=(n.replace(' ','_'))
usernames.append(username)
print (usernames)

预期输出:

joey_tribbiani
monica_geller
chandler_bing
phoebe_buffay

我得到了什么:

['Phoebe_Buffay']

【问题讨论】:

您需要对齐您的附加语句。它正在退出 for 循环 【参考方案1】:

Pythonic 的实现方式是使用list comprehension。试试这个:

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = [n.lower().replace(' ','_') for n in names]
print (usernames)

现在,让我们跳转到您的代码。问题在于username=(n.replace(' ','_')) 行。在每次迭代中,您都在重新定义变量,并且在 for 循环的最后一次迭代之后,username 指向列表中的最后一个元素。

可能这只是缩进问题,您希望在 for 循环的每次迭代中进行 append 操作,但不小心忘记了正确缩进。我删除了username 变量并将append 移到for 循环下。试试这个:

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []
for n in names:
    usernames.append(n.lower().replace(' ','_'))
print(usernames)

输出:

['joey_tribbiani', 'monica_geller', 'chandler_bing', 'phoebe_buffay']

【讨论】:

以上是关于为啥我不能从将一个列表附加到另一个列表中获取元素的主要内容,如果未能解决你的问题,请参考以下文章

为啥嵌套字典不能正确附加到列表中?

如何在 Discord Py 中将列表附加并保存到另一个文件中?

为啥 foo.append(bar) 会影响列表列表中的所有元素?

为啥bash只将第一个元素附加到数组

Python中字典数据类型,字典.values()可以进行遍历,为啥不能通过角标进行获取元素?

将新项目附加到列表中的列表