假設我有一個列表x = [1,2,3],我想輸出除索引的每一個其他值,是否有列表操作我可以使用?,即:x [0] => [2,3],x [1] => [1,3],x [2] => [1,2]?列表切片python每隔一個值
回答
每隔是
x[::2], start at 0
x[1::2], start at 1
>>> x = [1, 2, 3]
>>> x[:1] + x[2:]
[1, 3]
所以,你想除了索引值,每個值: 其中i是指數:
>>> list = [1,2,3,4,5,6,7,8]
>>> [x for x in list if not x == list[i]]
這會給你沒有實例列表的元素,例如:
>>> i = 2
>>> list = [1,2,3,4,5,6,7,1,2,3,4,5,6,7]
>>> [x for x in list if not x == list[i]]
[1, 2, 4, 5, 6, 7, 1, 2, 4, 5, 6, 7]
注意3根本不在該列表中。
看到我對這個問題上的其他回覆答案的評論。 –
我更新了我的答案以反映問題的實際意圖。 –
這仍然是不正確的,因爲當列表重複元素時它失敗。 –
你可以使用x[:i] + x[i+1:]
:
In [8]: x = [1, 2, 3]
In [9]: i = 0
In [10]: x[:i] + x[i+1:]
Out[10]: [2, 3]
根據上下文,x.pop(i)
也可能是有用的。它通過刪除並返回i-th
元素來修改列表。如果你不需要這個元素,del x[i]
也是一個選項。
'x.pop(i)'返回元素,如果你不需要,那麼就使用'del x [i]'。 –
@Lattyware:好點,謝謝! – NPE
您可以使用此:
def exclude(l, e):
return [v for i, v in enumerate(l) if i != e]
>>> exclude(range(10), 3)
[0, 1, 2, 4, 5, 6, 7, 8, 9]
+1。這可能比切片方法更快,因爲它不會創建並丟棄兩個中間列表。順便說一句,很好的選擇功能名稱。 –
@StevenRumbalski - 謝謝!內部變量名稱很短,但爲了快速寫出,它似乎很好。 –
我們可以用'!='來代替'<>'但請:) :) –
你可以用切片做到這一點,但我會忍不住去嘗試:
a = [1, 2, 3]
b = a[:]
del b[1]
編輯
上面並「技術上」使用切片操作,恰好在list
對象上實際上是淺拷貝。
更重要的是靈活的,應該不會有什麼缺點是使用:
a = [1, 2, 3]
b = list(a)
del b[1]
名單內置適用於任何可迭代(而切片操作[:]
作品的列表或那些可轉位),這樣你甚至可以將其擴展到結構,如:
>>> a = '123'
>>> b = list(a)
>>> del b[0]
>>> ''.join(b)
'23'
我認爲這是最明智的選擇,說實話。它非常清楚發生了什麼並且非常簡單。 –
這在技術上也是按照您所寫的方式使用切片。 –
@MarkByers如果你願意(我真的覺得是更好的複製方法),你可以很容易地用'list(a)'複製列表。 –
my_list = [1, 2, 3]
my_list.remove(my_list[_index_]) #_index_ is the index you want to remove
使得:my_list.remove(my_list[0])
將產生[2, 3]
, my_list.remove(my_list[1])
會產生[0, 3]
, my_list.remove(my_list[2])
會產生[1, 2]
。
編輯:我現在看到你想說什麼,如果有重複的值,這是不正確的,它會就地影響列表。 –
- 1. Python列表切片
- 2. 切片python列表
- 3. Python:在句子列表中切片每個句子
- 4. 切片??附加列表Python
- 5. Python列表切片錯誤
- 6. 切片列表(Python 3中)
- 7. Python列表(切片法)
- 8. 切片子在Python列表
- 9. Python的切片列表
- 10. 切片串在Python列表
- 11. Python中的「切片列表」和「省略號」;切片列表和列表與列表切片
- 12. Python:通過唯一值分隔列表
- 13. Python使用多個元組列表對一個列表進行切片
- 14. 切片列表使用一個變量,在Python
- 15. Python - 在切片列表中創建多個列表
- 16. 切片一個MySQL陣列
- 17. 如何切片在Python中切片的列表?
- 18. 切片Python列表VS切片[R載體
- 19. 用間隔切片python字符串?
- 20. 切片Python列表進入新的Python列表
- 21. Python的嵌套列表切片
- 22. 顛倒Python中的列表切片
- 23. Python中的列表切片2
- 24. Python的切片分配改變列表
- 25. Python反轉列表中的切片
- 26. 切片可能的空列表Python
- 27. 在列表中設置python切片
- 28. 切片python中每個唯一ID的數據
- 29. 從Python中列表中的每個數字減去一個值?
- 30. 爲什麼指定一個新的值切片列表可以更改python中的原始列表
問題不是「所有其他」,因爲在步驟中,問題是「除提供的索引之外的所有其他值」。 –
我差點發布這個答案太哈哈。 –
我的不好,我猜不應該在照料廚房時回答問題。 – arynaq