2017-04-16 78 views
1

最近我對如何一些值設置爲零 這裏有些問題是我的代碼:如何在一個特定的時間間隔的一些值設置爲零

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,但它仍然沒有我想要的任何好結果。有人幫我解決了這個問題嗎?

+1

看起來您需要觀看有關Python中的賦值和名稱工作原理的快速視頻。 https://www.youtube.com/watch?v=_AEJHKGk9ns – timgeb

+0

您在這裏做了許多冗餘操作。我建議使用切片分配更方便,但要糾正您的代碼將實際上重寫它。 –

+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] 
+0

附加pythonic:'a [2:5] = [0] * 3' – gyre

+0

甚至'a [2:5] = [0] *(5 - 2)':-) –

+0

非常感謝! 但是,'a'是一個假設的集合。實際上,我想從excel導入集合,因此有太多的數據需要處理。我認爲使用「if ... else ...」的方法更好。 –

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] 

我仍然建議你觀看我在評論中鏈接你的視頻。

+0

非常感謝!我會觀看視頻來澄清問題。 –

相關問題