为什么我只能加入一个列表的可迭代对象,我该如何解决这个问题?



我是python新手,我想做一个" Band name generator ";码战上的数据,但我有麻烦与连接函数,我不知道为什么。它说"只能加入一个可迭代对象"但我试图加入一个列表,这是一个可迭代的,所以我不明白这里的问题是什么,以及如何解决这个问题。提前谢谢你!

import re
regex = r'^[a-z]$|^([a-z]).*1$'
def split(name):
return [char for char in name]

def band_name_generator(name):
if (re.search(regex, name)):
x = split(name).append(split(name)[1:])
return "".join(x)
else:
return "The " + name.capitalize()
print(band_name_generator("alaska"))

首先,内置函数list()与您的拆分函数相同,因此我建议如果可以的话使用它。

您还可以将字符串拼接为列表,然后将它们连接在一起,这样函数band_name_generator()可以重写为如下所示

def band_name_generator(name):
if (re.search(regex, name)):
x = name + name[1:]
return x

return "The " + name.capitalize()

最后一个else语句是不必要的,因为当函数返回时,它就停止了。

我还建议使用官方文档推荐的regex.compile

import re
p = re.compile(r'^[a-z]$|^([a-z]).*1$')
p.search(name)

在任何情况下,你的代码中的问题是,append()不返回一个新的列表,但修改原来的一个,所以你的值x是空的(NoneType)

最新更新