遍历嵌套列表中的列表 - Python
Iterate through list in nested list - Python
我有一个长列表,其中包含嵌套列表,每个列表都包含多个 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]]
我会这样做:
>>> 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]
您基本上是遍历每个坐标元组并分别获取 X 坐标 ([0]
) 和 y 坐标 ([1]
)。
可能有更好的方法,这是我想到的快速方法。
试试这个:
flatlist = [el for lst1 in MyList for lst2 in lst1 for el in lst2]
number1, number2 = flatlist[0::2], flatlist[1::2]
首先将列表展平,然后将其分成两个具有交替元素的列表。
如果时间复杂度不是问题,您可以简单地使用三个 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]
我有一个长列表,其中包含嵌套列表,每个列表都包含多个 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]]
我会这样做:
>>> 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]
您基本上是遍历每个坐标元组并分别获取 X 坐标 ([0]
) 和 y 坐标 ([1]
)。
可能有更好的方法,这是我想到的快速方法。
试试这个:
flatlist = [el for lst1 in MyList for lst2 in lst1 for el in lst2]
number1, number2 = flatlist[0::2], flatlist[1::2]
首先将列表展平,然后将其分成两个具有交替元素的列表。
如果时间复杂度不是问题,您可以简单地使用三个 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]