指令:get_name_list()函数返回参数name_list中所有名称的列表,其中给定的字母在参数to_look_for中提供。
问题:如果删除"a_list+=[name]'表达式中"name"的方括号,它将显示以下错误输出。但是,如果使用方括号或"append()"方法,将生成正确的输出(下面是第二个正确的输出)。我想知道为什么没有[名称]中的方括号,就不能产生正确的输出?
错误输出:
names with d ['J', 'a', 'd', 'e']
names with k ['M', 'i', 'k', 'e', 'y']
错误代码:
def main():
names = ["Jasper", "Jade", "Mikey", "Giani"]
names_d = get_name_list(names, "d")
names_k = get_name_list(names, "k")
print("names with d", names_d)
print("names with k", names_k)
def get_name_list(name_list, to_look_for):
a_list = []
for name in name_list:
#print(name)
if to_look_for in name:
print(name)
a_list += name
#a_list.append(name)
return a_list
main()
正确输出:
names with d ['Jade']
names with k ['Mikey']
正确代码:
def main():
names = ["Jasper", "Jade", "Mikey", "Giani"]
names_d = get_name_list(names, "d")
names_k = get_name_list(names, "k")
print("names with d", names_d)
print("names with k", names_k)
def get_name_list(name_list, to_look_for):
a_list = []
for name in name_list:
#print(name)
if to_look_for in name:
print(name)
#a_list += name
a_list.append(name)
return a_list
main()
'+='运算等于列表内置方法的extend()
。它将首先将值更改为列表的等号,然后进行扩展。
在您的情况下:
a_list += name # which is the same as a_list.extend(name), although name is a string, it will be converted to a list first
将字符串转换为列表时,其作用类似于将'abc'
更改为['a', 'b', 'c']
。这就是你的['J', 'a', 'd', 'e']
来自