我需要你的帮助,因为我不明白为什么可以使用join()带有for循环作为参数的方法。
前任:
" ".join(str(x) for x in list)
Run Code Online (Sandbox Code Playgroud)
Python 文档:
str.join(iterable)返回一个字符串,它是可迭代中字符串的串联。
TypeError如果 iterable 中存在任何非字符串值(包括字节对象),则会引发A 。元素之间的分隔符是提供此方法的字符串。
可以请有人解释一下吗?
该语句(str(x) for x in list)称为生成器表达式:
>>> (str(x) for x in [1,2,3])
<generator object <genexpr> at 0x7fc916f01d20>
Run Code Online (Sandbox Code Playgroud)
其作用是创建一个可以迭代一次的对象,并生成一次创建一个的元素。您可以像迭代列表一样迭代它,如下所示:
>>> gen = (str(x) for x in [1,2,3])
>>> for s in gen:
... print s
...
1
2
3
Run Code Online (Sandbox Code Playgroud)
生成器表达式是可迭代的,因此 join 函数所做的就是迭代它并连接它的值。