我有一個帶有嵌套串列的長串列,每個串列都包含多個 xy 坐標。簡而言之,我的串列看起來像這樣
MyList = [ [ [1, 2], [1, 2] ], [ [1, 2], [1, 2] ], [ [1, 2], [1, 2] ]...]]]
我想將所有“1”提取到一個變數,將所有“2”提取到一個變數。因此,將第一個元素提取到一個新串列中,并將第二個元素提取到另一個新串列中。我試過了
for list in MyList:
for newList in list:
number1 = [item[0] for item in newList]
number2 = [item[1] for item in newList]
這給了我錯誤“int object is not subscriptable”。我也試過
def Extract(MyList):
return list(list(zip(*MyList))[0])
最后,我嘗試將“1”列印出來,看看它是否有效
print(MyList[:][:][0])
output: [[1, 2], [1, 2]]
uj5u.com熱心網友回復:
我會這樣做:
>>> a = MyList
>>> x = [a[i][j][0] for i in range(len(a)) for j in range(len(a[i]))]
>>> x
[1, 1, 1, 1, 1, 1]
>>> y = [a[i][j][1] for i in range(len(a)) for j in range(len(a[i]))]
>>> y
[2, 2, 2, 2, 2, 2]
您基本上是在遍歷每個坐標元組并[0]分別獲取 X 坐標 ( ) 和 y 坐標 ( [1])。
可能有更好的方法,這是我想出的快速方法。
uj5u.com熱心網友回復:
試試這個:
flatlist = [el for lst1 in MyList for lst2 in lst1 for el in lst2]
number1, number2 = flatlist[0::2], flatlist[1::2]
首先將串列展平,然后將其拆分為兩個具有交替元素的串列。
uj5u.com熱心網友回復:
如果時間復雜度不是問題,您只需使用三個 for 回圈即可處理此問題:
one = []
two = []
for item in MyList:
for arr in item:
for num in arr:
if num == 1:
one.append(num)
else:
two.append(num)
# [1, 1, 1, 1, 1, 1]
# [2, 2, 2, 2, 2, 2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475978.html
