Python中如何合并循环与print语句?
关于合并循环与print语句的问题解答
嘿,你的思路很棒,但当前的写法确实存在小问题——直接执行 print(item for item in items) 时,Python 会把括号里的内容当成生成器表达式,最终打印出来的是生成器对象本身(比如 <generator object <genexpr> at 0x7f9b1c05a580>),而不是列表里的每个元素。
下面给你几种正确的实现方式,都能达到把循环和打印合并的效果:
方法1:使用str.join()拼接元素
这种方法会把列表里的所有元素拼接成一个字符串,再一次性打印,和你原循环的输出效果完全一致(每个元素占一行):
items = ["Abby","Brenda","Cindy","Diddy"] print('\n'.join(items))
如果想要元素用空格分隔打印,只需要把'\n'换成' '即可。
方法2:使用解包操作符*
这是更简洁的写法,利用*把列表元素解包成print函数的多个参数,再通过sep指定分隔符:
items = ["Abby","Brenda","Cindy","Diddy"] print(*items, sep='\n')
sep='\n'让每个元素之间用换行分隔,和原循环的输出一致;如果省略sep,默认会用空格分隔元素。
额外补充(不推荐但可行)
如果一定要用生成器表达式配合打印,可以结合sys.stdout来实现,但这种写法没必要,不如上面两种简洁:
import sys items = ["Abby","Brenda","Cindy","Diddy"] sys.stdout.write('\n'.join(item for item in items) + '\n')
内容的提问来源于stack exchange,提问作者Sanjit Prasad
相关产品推荐
相关产品推荐

