1
Pagliacii 2020-05-13 19:24:05 +08:00 1
前者是遍历列表元素,后者是遍历 [0, len(list)) 序列的元素
|
2
wenqiang1208 2020-05-13 19:24:15 +08:00 1
。。。。
for i in list : i 是 list 里面的元素的值 for i in range(len(list)) :i 是 range 新生成迭代器( 0,1,2,3,4 )里的元素 |
3
GTD OP 哦哦 我明白了,for i in list 的话,是把 i 变成 list 的每一个,然后每次增加一个,按 1,2,3,4,5 来。in range 的话,就一定是从 0-5 这样来
|
4
GTD OP 不好意思我丢人了。。。好久没写 Python,刚刚突然发现用 range 可以,直接 in list 不行,哈哈哈
|
5
Pagliacii 2020-05-13 19:26:19 +08:00
只是恰好你的列表元素是数字而已
|
6
cz5424 2020-05-13 19:28:48 +08:00 via iPhone 1
for i in range(1, 5)举一反三
|
9
arrow8899 2020-05-13 20:02:12 +08:00
还可以这样写
for index, value in enumerate(list): print (index, value) 效率更高,也更简洁 |
10
crella 2020-05-13 20:02:41 +08:00 via Android
实现了 iterable 就行(好像是这样吧
|
11
crella 2020-05-13 20:04:11 +08:00 via Android
感觉动态语言的发展方向都差不多,啥时候 nodejs 也能支持 for 或者 each 迭代?(
|
12
crella 2020-05-13 20:10:35 +08:00
sorry,又暴露了我的无知,js 对应的是 for (let value of/in list){...}
|
13
l1nyanm1ng 2020-05-13 20:12:04 +08:00
@crella 直接用 Array.prototype.forEach 或者 Array.prototype.map 岂不美哉,感觉都好久没用过命令式的 api 了
|
14
zhanglintc 2020-05-13 22:01:51 +08:00
我还以为是在问 list 和 generator 的区别, 结果是这个.
list 里放点别的东西差别就很明显了嘛. |
15
sudoy 2020-05-13 23:10:11 +08:00 1
楼上说的对,你放点别的东西,别放 12345,这样一眼就看出来。一个是值,一个是 index
mylist = ['google', 'facebook', 'microsoft'] for x in mylist: print(x) # 输出结果应该是 google, amazon, facebook for y in range(len(mylist)): print(y) # 输出结果应该是 0, 1, 2 |
16
Enying 2020-05-14 00:05:13 +08:00 via Android
大家都是正解
|
17
sunmker 2020-05-14 09:23:42 +08:00
前者是遍历,后者是取下标,list 有下标,别的嘞?
|
19
24bit 2020-05-14 10:25:23 +08:00
本质上都是一样的,只要实现了迭代器协议就可以用 for ... in 语法,range 对象迭代时返回的是数字而已
|
20
llsquaer 2020-05-14 11:32:32 +08:00
for i in list:
print('i') 表示遍历列表,并打印 i 的值( 比如 a b c d).你的案例看不出区别 for i in range(len(list)): print('i') 表示遍历的次数,并打印迭代后的数值 当然 你问题 有 list 和 range ...list 是列表,,而 range 简单理解为计数用的. |
21
northisland 2020-05-14 17:30:03 +08:00
python3 里 range 返回的是迭代器,和 list 不一样,运行时才生成。
python2 里木有什么区别 |