用切片 [:] 复制一个列表,并尝试用lower() 将新列表中的所有元素转换为小写
我以为这应该可行。目标是先使用 [:] 复制列表,然后把列表中的所有项转换为小写。可能有很多方法可以做到这一点,但有没有办法让我尝试的做法也能工作?
list = ['CAR', 'TRUCK']
copied_list = list[:]
for value in copied_list:
value = value.lower()
print(copied_list)
我期望在输出中看到新复制的列表以小写形式打印。然而,大小写没有变化:
Actual result: ['CAR', 'TRUCK']
解决方案
第一点:你在 value = value.upper() 中忘记了 ()。
第二点:你需要 lower(),而不是 upper()。
第三点:存在函数 list(),所以不要使用变量 list,因为你将无法访问到函数 list()
它会把本地变量 value 的文本改成小写,但列表上的文本不会改变。
如果你想在现有列表中进行替换,可能需要使用索引
copied_list[index] = copied_list[index].lower()。
比如
old_list = ['CAR', 'TRUCK']
copied_list = old_list[:]
for index in range(len(copied_list)):
copied_list[index] = copied_list[index].lower()
print(copied_list)
不过更常见的是先创建一个空列表,然后 .append() 新值
old_list = ['CAR', 'TRUCK']
copied_list = [] # empty list
for value in old_list:
copied_list.append( value.lower() )
print(copied_list)
或者甚至作为列表推导
old_list = ['CAR', 'TRUCK']
copied_list = [value.lower() for value in old_list]
print(copied_list)
你也可以使用 map() 搭配 str.lower(如果你想一次看到结果,最终也可以使用 list()——前提是你不打算为此使用 for-循环)
old_list = ['CAR', 'TRUCK']
copied_list = list(map(str.lower, old_list))
print(copied_list)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。