如何在特定时间间隔内将某些值设置为零

时间:2017-04-16 07:08:16

标签: python

最近我有一些关于如何将某些值设置为零的问题 这是我的代码:

a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
b=[]
c=[]
e=[]
for st in range(0,10):
    b.append(a[st])
    if (b>5) or (b<3):
        c=b
    else:
        c=0
    e=c
print e

我希望结果是e=[1,2,0,0,0,6,7,8,9,10],但e的结果始终不是我想要的。我使用我在本网站b[ma.logical_or(b<5,b>3)]=0找到的另一种方式,它仍然没有#39; t我有什么好结果。有人帮我解决了这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用切片和切片分配:

a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
a[2:5] = [0, 0, 0]
a[:10]
[1, 2, 0, 0, 0, 6, 7, 8, 9, 10]

答案 1 :(得分:0)

如果a可以随机排序,那么简单的列表理解就可以了。

>>> a
[12, 14, 4, 2, 7, 3, 13, 5, 6, 1, 10, 9, 8, 15, 11]
>>> [0 if 3 <= x <= 5 else x for x in a]
[12, 14, 0, 2, 7, 0, 13, 0, 6, 1, 10, 9, 8, 15, 11]

然而,在你的关卡中,直接换循环可能更有教育意义。

>>> result = []
>>> for x in a:
...     if 3 <= x <= 5:
...         result.append(0)
...     else:
...         result.append(x)
... 
>>> result
[12, 14, 0, 2, 7, 0, 13, 0, 6, 1, 10, 9, 8, 15, 11]

我仍然建议您在评论中观看我关联的视频。