作者Neverfor (yorker)
看板Python
标题[问题] list的iterator应用问题
时间Sat Jul 2 05:53:25 2016
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
--
Sent from my Windows
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.82.77.154
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1467410007.A.1B9.html
1F:→ Neverfor: element 打错@@07/02 05:54
2F:推 mars90226: 这是list comprehension,用来产生list07/02 07:50
3F:→ mars90226: 1.对 2.错,是for y中的x是前面的x07/02 07:52
※ 编辑: Neverfor (111.82.77.154), 07/02/2016 21:55:01
4F:推 adgjl5645: 这边用的是小挂号,应该是产生generator而不是list07/02 22:28
大致上了解了!!感谢!!
不过还有个问题..
range(0)跟range(0,0)都是空集合吗?
※ 编辑: Neverfor (111.82.77.154), 07/03/2016 03:42:27
5F:→ uranusjr: range(0) == range(0, 0), 但是空 list 不是集合 (set) 07/03 09:47
6F:→ uranusjr: 另外在 Python 3 它们也会是 generator 07/03 09:48
7F:推 adgjl5645: 在 python2 里的话 range 是 list, xrange 是generator 07/04 03:07
8F:→ adgjl5645: range(0) 跟 range(0,0) 会是一样的 07/04 03:09