[问题] list的iterator应用问题

楼主: Neverfor (八卦蟑螂)   2016-07-02 05:53:25
test=( (x, y) for x in range ( 3 ) for y in range (x) )
for x,y in test:
print(x,y)
output:
1 0
2 0
2 1
不好意思 看了很久想不出来程式码第一行跟结果的关系QQ
这种用法是什么意思呢?
想问
1. (x,y)是否代表 输出的iterator 1个element是 (x,y)
2.循环看不太懂意思
前面的for x 是否是后面y range的x
楼主: Neverfor (八卦蟑螂)   2016-07-02 05:54:00
element 打错@@
作者: mars90226 (火星人)   2016-07-02 07:50:00
这是list comprehension,用来产生list1.对 2.错,是for y中的x是前面的x
作者: adgjl5645 (今天不想哭)   2016-07-02 22:28:00
这边用的是小挂号,应该是产生generator而不是list
作者: uranusjr (←這人是超級笨蛋)   2016-07-03 09:47:00
range(0) == range(0, 0), 但是空 list 不是集合 (set)另外在 Python 3 它们也会是 generator
作者: adgjl5645 (今天不想哭)   2016-07-04 03:07:00
在 python2 里的话 range 是 list, xrange 是generatorrange(0) 跟 range(0,0) 会是一样的

Links booklink

Contact Us: admin [ a t ] ucptt.com