回答
如果 「數組」 你的意思是 「清單」:
[0 if e == 1 else e for e in a]
其中a
是您的清單。
如果「數組」你的意思是array.array
:
array.array('i', [0 if e == 1 else e for e in a])
l是pep8失敗 – Tom
我會在一般情況下添加單字母變量suck bigtime。 –
如果你的「陣列」是一個「清單」你可以做一個列表理解:
x = [1,2,3,6,7,8,1,1,1,6,7,5]
x = [item if item != 1 else 0 for item in x]
當然,這將創建一個新的名單。如果您的列表是非常大的,你不希望創建一個新的你可以這樣做,而不是:
for i, item in enumerate(x):
if item == 1:
x[i] = 0
或者這樣:
for i in xrange(len(x)):
if x[i] == 1:
x[i] == 0
如果列表真的很大......那麼你的方法會變得很慢... – Chong
@Chong:第一個將是內存效率低下但速度更快,第二個將會更慢,但內存效率更高。但是,再次,如果它是一個Python列表,這些是實現它的方法(除了Sven的答案)。如果它是一個numpy數組,那麼選項是不同的。 –
大型列表蒙山只有少數出現1
,以下是比天真for循環改變的地方名單更高效:
i = a.index(1)
try:
while True:
a[i] = 0
i = a.index(1, i + 1)
except ValueError:
pass
這也比天真的for循環的可讀性,所以如果性能問題只用它。
我只是想提也可以使用numpy的陣列,在這種情況下,你可以做到以下幾點:
import numpy
a = numpy.array([1,2,3,6,7,8,1,1,1,6,7,5])
numpy.where(a==1,0,a)
- 1. 如何替換MongoDB文檔中的數組的所有元素?
- 2. 如何替換滿足條件的數組的所有元素?
- 3. 如何替換ArrayAdapter的所有元素
- 4. 如何在python中調用我所有的數組元素?
- 5. JavaScript - 如何將int數組中的所有元素增加1
- 6. 如何替換數組的元素?
- 7. 替換Knockout.js中的所有元素observableArray
- 8. 如何替換數組元素到位
- 9. 我如何用一個值替換矢量的所有元素?
- 10. 我應該用canvas元素替換所有的img元素嗎?
- 11. 如何使用前綴字符串替換數組中的所有元素?
- 12. 在熊貓數據框中,如何用元素y替換所有元素x?
- 13. 替換數組中的對角元素
- 14. 替換數組中的元素
- 15. 替換數組中的元素?
- 16. 替換對象數組中的元素
- 17. 替換數組中的單個元素
- 18. 在Python中替換數組中的元素
- 19. 我們如何獲得Mongodb中的所有數組元素?
- 20. php - 用另一個數組的元素替換數組元素?
- 21. 如何將int數組轉換爲nullable int數組而不循環元素?
- 22. 反轉int數組的所有三個數字元素
- 23. 如何轉換元組的元組或INT在python
- 24. 如何將bash數組的所有元素轉換爲小寫?
- 25. 搜索並替換所有元素
- 26. Python:列表:最後添加的對象元素替換所有其他元素
- 27. 你如何替換數組中的重複元素?
- 28. 如何正確替換數組中的值元素?
- 29. 如何替換/重置TCL數組中的元素值?
- 30. 如何用「OTHER」替換數組中的空元素?
是你的「陣列」實際上是一個列表,或者是不是真的'array.array的實例'? –