我刚接触python,所以不太了解它。请帮我澄清一下:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
print(names)
for name in names:
name.lower().replace(' ','_')
print(names)
为什么不改变列表名中的值呢。我期待的是:
['joey_tribbiani', 'monica_geller', 'chandler_bing', 'phoebe_buffay']
运行良好:
names = ["Joey Tribbiani", "Monica Geller", "Chandler Bing", "Phoebe Buffay"]
print(names)
names1=[]
for name in names:
name1=name.lower().replace(' ','_')
names1.append(name1)
print(names1)
问题是您正在更改从迭代器获取的项,而该项是一个字符串,它是一个不可变的对象。当你对一个字符串调用一个方法时,它不会改变,而是返回一个新的字符串。
当您运行
for item in items
时,您基本上调用的是items.__iter__()
,它相当于iter(items)
,这将为您提供列表中每个元素的副本。你知道吗有几种方法可以解决这个问题,其中一种方法是创建一个新的列表并附加修改过的项。另一个解决方案是使用一个更具Python意味的列表理解:
也可以使用索引替换列表中的值,使用索引的方式如下:
来自
string.replace()
(https://docs.python.org/2/library/string.html#string.replace)的文档:您需要将此副本存储在某个地方,这就是第二个示例起作用的原因。你知道吗
相关问题 更多 >
编程相关推荐