python – 枚举函数
发布时间:2020-12-20 11:49:53 所属栏目:Python 来源:网络整理
导读:谁可以给我解释一下这个. 所以,我有一个数字从-1到1的列表,我想在列表中提取某些数字的位置. 例: s= [-1,0.5,0.2,-0.9]z = enumerate(s)y1 = []for i,j in z: if j=-0.8 and j=-1: k = i y1.append(k)y2 = []for i,j in z: if j=0.8 and j=-0.8: k = i y2.a
谁可以给我解释一下这个.
所以,我有一个数字从-1到1的列表,我想在列表中提取某些数字的位置. 例: s= [-1,0.5,0.2,-0.9] z = enumerate(s) y1 = [] for i,j in z: if j<=-0.8 and j>=-1: k = i y1.append(k) y2 = [] for i,j in z: if j<=0.8 and j>=-0.8: k = i y2.append(k) 我得到y1 = [0,3]和y2 = [] 但是如果我定义第二个枚举: z1 = enumerate(s) y1 = [] for i,j in z1: if j<=-0.8 and j>=-1: k = i y1.append(k) z2 = enumerate(s) y2 = [] for i,j in z2: if j<=0.8 and j>=-0.8: k = i y2.append(k) 我得到结果y1 = [0,3]和y2 = [1,2] 为什么我需要第二次枚举? 解决方法
enumerate返回序列的迭代器.遍历后,无法再次使用:
In [1]: l = [1,2,3,4,5] In [2]: e = enumerate(l) In [3]: e Out[3]: <enumerate at 0x7fad7aea25e8> In [4]: list(e) Out[4]: [(0,1),(1,2),(2,3),(3,4),(4,5)] In [5]: list(e) Out[5]: [] 你可以用一个列表包装它: In [6]: e = list(enumerate(l)) In [7]: e Out[7]: [(0,5)] In [8]: list(e) Out[8]: [(0,5)] In [9]: list(e) Out[9]: [(0,5)] 您还可以使用列表推导来简化您的解决方案: y1 = [i for i,x in enumerate(s) if -1 <= x <= -0.8] y2 = [i for i,x in enumerate(s) if -0.8 <= x <= 0.8] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |