关于Python列表输出

2024-06-07 06:12:27 发布

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

嗨,有人能告诉我为什么这个代码打印出列表上的最后一项(“菲比·布菲”),而不是整个列表

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []

for name in names:
  usernames = name.replace(" ","_")

print(usernames)

多谢各位


Tags: 代码namein列表fornamesmonicabing
2条回答

您每次都在替换usernames的值,而不是像您可能希望的那样附加到列表中:

names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
usernames = []

for name in names:
  usernames.append(name.replace(" ","_"))

print(usernames)

这将输出您期望的结果:

['Joey_Tribbiani', 'Monica_Geller', 'Chandler_Bing', 'Phoebe_Buffay']

在您的代码中,您没有使用原始的usernames列表来保存任何数据,而是替换for循环的每个迭代中usernames所引用的内容-在for循环完成后,这是原始列表中的最后一个元素

您正在寻找append()

for name in names:
    usernames.append(name.replace(" ","_"))

否则,您将在每次迭代中覆盖usernames,它是一个字符串,不再是一个列表。更多的Pythonic是使用列表理解:

usernames = [name.replace(" ", "_") for name in names]

相关问题 更多 >