簡體   English   中英

Python 2D列表切片

[英]Python 2D list slice

我環顧四周,找不到任何具體的東西,所以這里有:

我有一份清單清單:

S = [[3,4],[6,7],[10,12]]

我想將第i個索引元素的第0個索引添加到另一個列表的末尾:

R = [5,6,7]

通常使用一維列表我可以說:

R = R + S[i:]

並從第i個索引中獲取所有元素,但我想要2D S的第i個索引的第0個索引。如果我們從i = 1開始,我最終會得到:

R = [5,6,7,6,10]

另外,我不想使用for循環我想要一個可以工作的列表切片方法(如果有的話),因為它需要在一定的范圍內。

您可以使用zip來轉置矩陣:

>>> S
[[3, 4], [6, 7], [10, 12]]
>>> zip(*S)
[(3, 6, 10), (4, 7, 12)]

然后切片換位:

>>> j=0
>>> i=1
>>> zip(*S)[j][i:]
(6, 10)

元組是可迭代的,因此連接將與列表一起使用:

>>> R = [5,6,7]
>>> R+=zip(*S)[j][i:]
>>> R
[5, 6, 7, 6, 10]

正如@jonrsharpe所說, numpy會為你做的伎倆:

import numpy as np
# Create two arrays
S = np.asarray([[3,4],[6,7],[10,12]])
R = np.asarray([5, 6, 7])
# Slice the S array
i = 1
sliced_S = S[i:, 0]
# Concatenate the arrays
R = np.concatenate((R, sliced_S))

快來看看numpy令人印象深刻的文檔索引

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM