正在尝试获取一些代理 ip,在清洗数据的时候发现了一个百思不得其解的东西。如下图所示:
在图中箭头标注的地方,用列表[],则终端输出的内容是正常的,符合预期的:
但如果将图中箭头标注的地方,换成 tuple(),终端输出的内容就不知道是什么东西了:
get_ips()返回的是自建的一个类 ResultContainer,可以看成是一个列表,其他部分的代码没啥特殊的。
请教大神这是什么原因啊!!!求教!
1
marsala OP 而且也仅在这里遇到了这样的情况,在其他地方用[(i,i) for i in range(100)]这样推导是没问题的
|
2
Owenjia 2019-10-01 16:34:48 +08:00 1
圆括号那个是生成器,不是推导式,没有元组推导式这种东西。
|
3
ysc3839 2019-10-01 16:48:03 +08:00 via Android
遇到不知道的东西请善用搜索,一搜索就能知道是 generator。
|
4
cyrbuzz 2019-10-01 16:54:54 +08:00
()的写法写出来是生成器,你用到的时候才会生成数据,不用它就不生成。
[]的写法写出来就是个列表,数据都生成好了。 大体可以理解成 `range(8)` 和 `list(range(8))` 的区别。 |
5
conn4575 2019-10-01 18:18:19 +08:00 via Android
这不是 python 里最有名的特性生成器表达式吗?我严重怀疑你是怎么学 python 的。。
|
6
liukrystal 2019-10-01 20:14:19 +08:00
前面那个是生成器,不是列表推导式。。。
|
7
zuoakang 2019-10-02 21:52:47 +08:00
|