Python 为什么join不';I don’我不会写一份清单

Python 为什么join不';I don’我不会写一份清单,python,python-3.x,list,join,Python,Python 3.x,List,Join,不起作用 但是, ','.join([number for number in range(2000,3201) if number%7 == 0 and number%5 != 0]) 工作。 类型列表的括号中不是有两个东西吗?join需要string类型,您必须修改列表函数,如下所示: ',join([str(number)表示范围(20003201)中的数字,如果数字%7==0,数字%5!=0]) .join要求项目为字符串。在你的理解列表中,用str(number)代替number。如

不起作用

但是,

','.join([number for number in range(2000,3201) if number%7 == 0 and number%5 != 0])
工作。
类型列表的括号中不是有两个东西吗?

join
需要
string
类型,您必须修改列表函数,如下所示:

',join([str(number)表示范围(20003201)中的数字,如果数字%7==0,数字%5!=0])

.join
要求项目为
字符串
。在你的理解列表中,用
str(number)
代替
number
。如果你用
i
代替
str(i)
@chepner,你的第二个代码也不会起作用。我没看到!tks!不起作用。“这到底是什么意思?”SayandipDutta建议使用括号<代码>连接
如果给它一个列表,它的工作效率会更高,而不是被迫迭代任意iterable两次(一次为结果字符串分配空间,另一次为实际构建字符串)。(或者更准确地说,列表理解在构建列表时比使用任意iterable时的
join
更有效。)@chepner不知道,它将删除。@chepner这是否适用于使用iterable的其他函数,例如
sum
,或者这是专门用于字符串的?特定于
join
,大部分情况下。与类似
s1+s2+s3
的东西相比,
join
更受欢迎的原因是,它在内存中创建一个字符串对象,并使用
s1
等对其进行初始化,而不是计算
s1+s2
,然后计算
结果+s3
。但是由于
str
s是不可变的,因此在不知道所有被连接字符串的总长度的情况下,无法创建一个字符串对象<另一方面,code>sum只需多次调用
+
即可添加其参数。(这就是
sum
被硬编码为拒绝将字符串的iterable作为其参数的原因之一。)
l=[]
for i in range(2000, 3201):
    if (i%7==0) and (i%5!=0):
        l.append(str(i))

','.join(l)