关于遍历列表,我这个错在哪了?百思不解

2021-03-22 18:19:15 +08:00
 maloneleo88
ha = ['273', '14549', '51511', '3', '0', '1', '1', '1', '1955548', '273', '2901', '14549', '0', '6', '1', '1', '1', '1955539', '273', '20394', '14549', '0', '2', '1', '1', '1', '1955561', '273', '14549', '2909', '3', '2', '1', '1', '1', '1955607', '273', '2915', '14549', '1', '0', '1', '1', '1', '1955592', '273', '2910', '14549', '3', '2', '1', '1', '1', '1955610', '273', '14549', '2913', '1', '3', '1', '1', '1', '1955583', '273', '14549', '24502', '2', '1', '1', '1', '1', '1955487', '273', '2900', '14549', '2', '0', '1', '1', '1', '1955473', '273', '2914', '14549', '0', '1', '1', '1', '1', '1955506', '273', '2909', '14549', '0', '0', '0', '0', '1', '1908708', '273', '14549', '24502', '2', '0', '1', '1', '1', '1908045', '273', '24502', '14549', '1', '3', '1', '1', '1', '1784091', '273', '14549', '2900', '2', '2', '0', '1', '1', '1784081', '273', '14549', '2909', '2', '0', '1', '1', '1', '1784098', '273', '2915', '14549', '2', '1', '1', '1', '1', '1784082', '273', '2910', '14549', '2', '4', '1', '1', '1', '1784076', '273', '14549', '20394', '1', '1', '0', '1', '1', '1783971', '273', '2913', '14549', '2', '3', '1', '1', '1', '1784067', '273', '14549', '2914', '1', '0', '1', '1', '1', '1784062', '273', '5953', '14549', '1', '0', '1', '1', '1', '1784055', '273', '14549', '2901', '2', '1', '1', '1', '1', '1783968', '273', '2900', '14549', '3', '1', '1', '1', '1', '1784050', '273', '14549', '2913', '0', '0', '0', '1', '1', '1784044', '273', '14549', '2915', '2', '0', '1', '1', '1', '1784040', '273', '2914', '14549', '2', '2', '0', '1', '1', '1783961', '273', '14549', '24502', '3', '2', '1', '1', '1', '1784036', '273', '2909', '14549', '2', '1', '1', '1', '1', '1784029', '273', '14549', '2901', '1', '2', '1', '1', '1', '1784025', '273', '2915', '14549', '0', '4', '1', '1', '1', '1784018']

for i in ha[3::9]:
if i == '0' and ha[ha.index(i) + 1] =='0':
print(ha[int(ha.index(i))+5])

#从第四个值开始遍历,步长 9
如果第四个值=0,看看 4+1 是不是也=0
如果都=0,打印 4+5 这组数字。不可以嘛?是因为设定了列表步长以后就没法得到循环以外的其他元素了吗?
2039 次点击
所在节点    Python
13 条回复
imn1
2021-03-22 18:26:00 +08:00
你重新看一下 index()的用法
应该是 i+1,不是 index(i)+1
后面一个也是这样
Pagliacii
2021-03-22 18:29:04 +08:00
index 只会返回第一个指定元素的索引,比如你代码里的 ha.index(i) 只会得到 4 这个结果
xiri
2021-03-22 18:29:12 +08:00
如果 i 等于 0,不管你遍历到的是哪一个 0,ha.index(i)永远返回 4 ( list.index 是返回列表中第一个等于该值的元素的索引)
Pagliacii
2021-03-22 18:29:43 +08:00
@Pagliacii #2 如果你想同时遍历元素和获取索引,可以用 enumerate
maloneleo88
2021-03-22 18:33:03 +08:00
@Pagliacii enumerate 用了 获取的索引是重新排序的,0,1,2,3,4,5 这样子

@imn1 那就知道报错字符串+数字了
maloneleo88
2021-03-22 18:35:10 +08:00
@maloneleo88 打错字,直接报错,此时变量 i 是字符串直接加数字报错
Pagliacii
2021-03-22 18:35:32 +08:00
@maloneleo88 #5 那就直接 for i in range(3, len(ha), 9)
imn1
2021-03-22 18:40:37 +08:00
@maloneleo88 #5
这程序看得晕,i 一般表示下标,要同时使用下标和值,就 i,v 对应 enumerate 好了
ch2
2021-03-22 18:41:42 +08:00
有重复元素,用 index 会坑的
maloneleo88
2021-03-22 18:43:36 +08:00
@Pagliacii
@imn1

明白了明白, 真笨啊。 先拿到索引,ha[i] 就可以了。。 谢谢
maloneleo88
2021-03-22 18:44:43 +08:00
@ch2 是啊,新手不知道。 以前都是只有一个元素,很好用。不明白为什么不能直接用 index 循环,这样多智能
biglazycat
2021-03-23 06:36:56 +08:00
result = list(enumerate(ha))

for i in result[3::9]:
if ha[i[0]] == '0' and ha[i[0] + 1] == '0':
print(f"ha[{i[0] + 5}]: {ha[i[0] + 5]}")
princelai
2021-03-24 10:57:19 +08:00
reshape 一下维度做起来不是更方便吗

```
ha_arr = np.array(ha)
ha_arr = ha_arr.reshape(-1,9).astype(int)
np.where((ha_arr[:,4]==0)&(ha_arr[:,5]==0),ha_arr[:,8],99999)
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/764027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX