加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读