Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的嵌套列表_Python_Nested Lists - Fatal编程技术网

python中的嵌套列表

python中的嵌套列表,python,nested-lists,Python,Nested Lists,我正在尝试拆分以下列表: A_list = [[[1,2,3,4],[5,6]], ==>[0] [[3,4,5],[2,3,5]], ==>[1] [[5,8,9],[10,11]], ==>[2] [[22,20],[5,7,8]]] ==>[3] 致: x_列表有第[0]行、第[2]行和第[4]行 y_列表有第[1]行、第[3]行和第

我正在尝试拆分以下列表:

A_list = [[[1,2,3,4],[5,6]],          ==>[0]
          [[3,4,5],[2,3,5]],          ==>[1]
          [[5,8,9],[10,11]],          ==>[2]
          [[22,20],[5,7,8]]]          ==>[3]
致:

x_列表有第[0]行、第[2]行和第[4]行

y_列表有第[1]行、第[3]行和第[5]行

其中每行有2个列表

有办法吗

谢谢你的帮助或提示

我应该提到,这个问题中的“A_列表”已经修改。情况如下:

A_list = [[1,2,3,4],[5,6],          ==>[0]
      [3,4,5],[2,3,5],              ==>[1]
      [5,8,9],[10,11],              ==>[2]
      [22,20],[5,7,8]]              ==>[3]

大多数张贴的答案都是在编辑前对问题的回答。感谢所有有用的答案。

您可以通过单独切片来实现这一点,而不需要这样的条件:

A_list = [[1,2,3,4],[5,6],
          [3,4,5],[2,3,5],
          [5,8,9],[10,11],
          [22,20],[5,7,8]]

x_list = A_list[::4] + A_list[1::4]
y_list = A_list[2::4] + A_list[3::4]
print(x_list)  # [[1, 2, 3, 4], [5, 8, 9], [5, 6], [10, 11]]
print(y_list)  # [[3, 4, 5], [22, 20], [2, 3, 5], [5, 7, 8]]

但它并没有维护秩序。如果这对您很重要,请使用发布的其他解决方案之一。

您可以通过单独切片来实现这一点,而不需要这样的条件:

A_list = [[1,2,3,4],[5,6],
          [3,4,5],[2,3,5],
          [5,8,9],[10,11],
          [22,20],[5,7,8]]

x_list = A_list[::4] + A_list[1::4]
y_list = A_list[2::4] + A_list[3::4]
print(x_list)  # [[1, 2, 3, 4], [5, 8, 9], [5, 6], [10, 11]]
print(y_list)  # [[3, 4, 5], [22, 20], [2, 3, 5], [5, 7, 8]]
但它并没有维护秩序。如果这对您很重要,请使用发布的其他解决方案之一。

(此答案的第一部分是在编辑问题之前编写的,更改
列表的布局
)您的列表没有“行”。相反,您希望将第一个和第二个元素分配给
x_列表
,第三个和第四个元素分配给
y_列表
,第五个和第六个元素分配给
x_列表
,依此类推

为此,您可以
枚举列表中的元素,并根据它们的索引模4将它们分配给
x\u list
y\u list

>>> x_list = [a for i, a in enumerate(A_list) if i % 4 < 2]
>>> x_list
[[1, 2, 3, 4], [5, 6], [5, 8, 9], [10, 11]]
>>> y_list = [a for i, a in enumerate(A_list) if i % 4 >= 2]
>>> y_list
[[3, 4, 5], [2, 3, 5], [22, 20], [5, 7, 8]]

在您默默地修改您的问题(不要这样做;您使大多数现有答案无效!)之后,您现在可以使用我的第二种方法,除了您新的
A_列表
现在已经是
所在的位置:

>>> x_list = [x for g in A_list[::2] for x in g]
>>> y_list = [y for g in A_list[1::2] for y in g]
(此答案的第一部分是在编辑问题之前编写的,更改了
A_列表的布局
)您的列表没有“行”。相反,您希望将第一个和第二个元素分配给
x_列表
,第三个和第四个元素分配给
y_列表
,第五个和第六个元素分配给
x_列表
,依此类推

为此,您可以
枚举列表中的元素,并根据它们的索引模4将它们分配给
x\u list
y\u list

>>> x_list = [a for i, a in enumerate(A_list) if i % 4 < 2]
>>> x_list
[[1, 2, 3, 4], [5, 6], [5, 8, 9], [10, 11]]
>>> y_list = [a for i, a in enumerate(A_list) if i % 4 >= 2]
>>> y_list
[[3, 4, 5], [2, 3, 5], [22, 20], [5, 7, 8]]

在您默默地修改您的问题(不要这样做;您使大多数现有答案无效!)之后,您现在可以使用我的第二种方法,除了您新的
A_列表
现在已经是
所在的位置:

>>> x_list = [x for g in A_list[::2] for x in g]
>>> y_list = [y for g in A_list[1::2] for y in g]

与Python的TOOWTDI原则相反,有几种方法可以做到这一点。一种可能性是:

x_list = [A_list[i] for i in range(len(A_list)) if i % 4 < 2]
y_list = [A_list[i] for i in range(len(A_list)) if i % 4 >= 2]


上述两种解决方案均适用于(修改前)。要了解目前问题的解决方案,请参见。

与Python TOOWTDI原则相反,有几种方法可以实现这一点。一种可能性是:

x_list = [A_list[i] for i in range(len(A_list)) if i % 4 < 2]
y_list = [A_list[i] for i in range(len(A_list)) if i % 4 >= 2]

上述两种解决方案均适用于(修改前)。要了解目前问题的解决方案,请参阅。

只是一个简单的循环

A_list = [[1,2,3,4],[5,6],[3,4,5],[2,3,5],[5,8,9],[10,11],[22,20],[5,7,8]]
x_list = []
y_list = []
V = 0
for A in A_list:
    if V % 4 < 2:
        x_list.append(A)
    else:
        y_list.append(A)
    V = V + 1

print(x_list, y_list)
A_list=[[1,2,3,4]、[5,6]、[3,4,5]、[2,3,5]、[5,8,9]、[10,11]、[22,20]、[5,7,8]]
x_列表=[]
y_列表=[]
V=0
对于A_列表中的A:
如果V%4小于2:
x_列表。附加(A)
其他:
y_列表。附加(A)
V=V+1
打印(x_列表、y_列表)
只是一个简单的循环

A_list = [[1,2,3,4],[5,6],[3,4,5],[2,3,5],[5,8,9],[10,11],[22,20],[5,7,8]]
x_list = []
y_list = []
V = 0
for A in A_list:
    if V % 4 < 2:
        x_list.append(A)
    else:
        y_list.append(A)
    V = V + 1

print(x_list, y_list)
A_list=[[1,2,3,4]、[5,6]、[3,4,5]、[2,3,5]、[5,8,9]、[10,11]、[22,20]、[5,7,8]]
x_列表=[]
y_列表=[]
V=0
对于A_列表中的A:
如果V%4小于2:
x_列表。附加(A)
其他:
y_列表。附加(A)
V=V+1
打印(x_列表、y_列表)

如果假设每行中只有两列,则可以执行以下操作:

A_list = [[1,2,3,4],[5,6],
      [3,4,5],[2,3,5],
      [5,8,9],[10,11],
      [22,20],[5,7,8]]

x_list = []
y_list = []

for x in range(len(A_list))[::4]:
    x_list.append(A_list[x])
    x_list.append(A_list[x + 1])
    y_list.append(A_list[x + 2])
    y_list.append(A_list[x + 3])
注意:这仅在列数为两列时有效。如果列数不总是两个或另一个集合数,那么这是一个困难的任务,就像Python列表一样

 x_list = [[1,2,3,4],[5,6],
       [5,8,9],[10,11]]

 x_list = [[1,2,3,4],[5,6],[5,8,9],[10,11]]

这将适用于任何数量的输入。如果假设每行中只有两列,则可以执行以下操作:

A_list = [[1,2,3,4],[5,6],
      [3,4,5],[2,3,5],
      [5,8,9],[10,11],
      [22,20],[5,7,8]]

x_list = []
y_list = []

for x in range(len(A_list))[::4]:
    x_list.append(A_list[x])
    x_list.append(A_list[x + 1])
    y_list.append(A_list[x + 2])
    y_list.append(A_list[x + 3])
注意:这仅在列数为两列时有效。如果列数不总是两个或另一个集合数,那么这是一个困难的任务,就像Python列表一样

 x_list = [[1,2,3,4],[5,6],
       [5,8,9],[10,11]]

 x_list = [[1,2,3,4],[5,6],[5,8,9],[10,11]]

这将适用于任何数量的输入。

您可以使用切片语法提取所需的项,然后:


您可以使用切片语法提取所需的项目,然后:


嵌套列表没有“行”。相反,前两个元素进入一个列表,第三个和第四个元素进入另一个列表,等等。所以所有偶数索引进入x_列表,所有奇数索引进入y_列表?是的,这就是我要尝试的do@S.M由于你修改了你的问题,被接受的答案变得无效。你能接受另一个与现在的问题相对应的答案吗?非常感谢。嵌套列表没有“行”。相反,前两个元素进入一个列表,第三个和第四个元素进入另一个列表,等等。所以所有偶数索引进入x_列表,所有奇数索引进入y_列表?是的,这就是我要尝试的do@S.M由于你修改了你的问题,被接受的答案变得无效。你能接受另一个与现在的问题相对应的答案吗?非常感谢。不,那不是OP想要的。@Błotosmętek我想我读得太快了。。谢谢你的回答。@Ev.Kounis这个问题似乎已经修改过了,所以
A_列表的形状现在不同了。不过,我只是想对订单发表评论。如果您想保留顺序,那么您可以-而不是添加切片列表-
zip
将它们向上,结果是:
[x代表zip中的sub(A_list[::4],A_list[1::4])代表sub中的x]
@A_guest您可以做很多事情来恢复顺序,但如果您走这条路,这个解决方案可能会停止有效。另一个例子是:
[x代表x,如果x在A_列表中[::4]+A_列表[1::4]]
,它使用原始
列表的顺序来订购新的。不,这不是OP想要的。@Błotosmętek I gu