行为1
带联接的代码:
print (' '.join(str(list(random.randrange(100) for j in range(4)))))
输出:
[ 8 2 , 8 3 , 1 2 , 7 1 ]
我所期望的是:
[82,83,12,71]
观察:
我正在使用list((函数来计算生成器表达式。我想这就是我出错的地方,我应该不将list((与生成器一起使用吗?
行为2:
code:相同的代码(没有list(((,但围绕另一个for循环:
for _ in range(2**2):
print (' '.join(str(random.randrange(100)) for i in range(4)))
输出:
98 72 56 63
71 12 45 63
83 91 65 89
31 45 65 95
观察:
在这里我得到了预期的结果。但我不明白为什么与有列表的行为1相比,这会起作用。我的理解是,for循环和列表都可以互换使用,以强制生成器输出。在理解str((在行为2中取整数,而在行为1中将输出视为字符序列的区别时,我缺少了什么?
代码#1连接列表的字符串表示,在该字符串表示中的每个字符之间放置一个空格。代码2连接字符串表示的列表,并用空格分隔每个字符串表示。