Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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_Python 3.x - Fatal编程技术网

Python 如何将索引的平面列表转换为列表列表?

Python 如何将索引的平面列表转换为列表列表?,python,python-3.x,Python,Python 3.x,给定一个列表列表,其中列表的数量和其中的元素数量是可变的。例如: import random import string bar = lambda: [random.choice(string.ascii_letters) for _ in range(random.randint(1,5))] branches = [bar() for _ in range(4)] >>> branches [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J

给定一个列表列表,其中列表的数量和其中的元素数量是可变的。例如:

import random
import string

bar = lambda: [random.choice(string.ascii_letters) for _ in range(random.randint(1,5))]
branches = [bar() for _ in range(4)]

>>> branches
[['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
我想知道是否有一种更简洁的方法来创建一个元组列表,对列表进行索引。比这更简洁的东西:

nodes = []
for branch in range(len(branches)):
    for node in range(len(branches[branch])):
        nodes.append((branch, node))

>>> nodes
[(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
这不能用列表来完成吗?我只是有点麻烦,我相信有一个脑力劳动者拿着一把大锤子

最终目标是随机访问每个节点一次,并且只访问一次,并且在访问期间,准确地知道当前节点在全局中的位置。因此,我将结果随机洗牌。洗牌(节点)并使用元组在其上循环,以通过分支[node[0]][node[1]]访问原始列表。欢迎提出更好的想法。

该功能允许您轻松访问每个元素的索引和值

>>> branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
>>> [(idx, id) for idx,val in enumerate(branches) for id,v in enumerate(val)]
[(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
该函数允许您轻松访问每个元素的索引和值

>>> branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
>>> [(idx, id) for idx,val in enumerate(branches) for id,v in enumerate(val)]
[(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
该函数允许您轻松访问每个元素的索引和值

>>> branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
>>> [(idx, id) for idx,val in enumerate(branches) for id,v in enumerate(val)]
[(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
该函数允许您轻松访问每个元素的索引和值

>>> branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
>>> [(idx, id) for idx,val in enumerate(branches) for id,v in enumerate(val)]
[(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]

如果目标是随机迭代每个项目:

import random
l = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]

l2 = [x for y in l for x in y]
random.shuffle(l2)

如果目标是随机迭代每个项目:

import random
l = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]

l2 = [x for y in l for x in y]
random.shuffle(l2)

如果目标是随机迭代每个项目:

import random
l = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]

l2 = [x for y in l for x in y]
random.shuffle(l2)

如果目标是随机迭代每个项目:

import random
l = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]

l2 = [x for y in l for x in y]
random.shuffle(l2)

确实不需要枚举:

In [1]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i in range(len(branches)) for j in range(len(branches[i]))]
Out[1]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
或者至少两种情况都不是:

In [2]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i,branch in enumerate(branches) for j in range(len(branch))]
Out[2]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]

确实不需要枚举:

In [1]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i in range(len(branches)) for j in range(len(branches[i]))]
Out[1]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
或者至少两种情况都不是:

In [2]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i,branch in enumerate(branches) for j in range(len(branch))]
Out[2]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]

确实不需要枚举:

In [1]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i in range(len(branches)) for j in range(len(branches[i]))]
Out[1]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
或者至少两种情况都不是:

In [2]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i,branch in enumerate(branches) for j in range(len(branch))]
Out[2]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]

确实不需要枚举:

In [1]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i in range(len(branches)) for j in range(len(branches[i]))]
Out[1]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]
或者至少两种情况都不是:

In [2]:    branches = [['t'], ['S', 't'], ['Q'], ['M', 'a', 'J', 'x', 'Y']]
           [(i, j) for i,branch in enumerate(branches) for j in range(len(branch))]
Out[2]:    [(0, 0), (1, 0), (1, 1), (2, 0), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4)]

嵌套的for循环可以编写为列表理解:
[(分支,节点)用于范围内的分支(len(分支))用于范围内的节点(len(分支[branch])]
。嵌套的for循环可以编写为列表理解:
[(分支,节点)用于范围内的分支(len(分支))用于范围内的节点(len(分支[branch])]
。嵌套的for循环可以编写为列表理解:
[(分支,节点)用于范围内的分支(len(branchs))用于范围内的节点(len(branchs[branch])]
。嵌套的for循环可以编写为列表理解:
[(分支,节点)用于范围内的分支(len(branchs))用于范围内的节点(len(branchs[branch])]
。在这些节点上随机迭代,但使用当前节点的标记在其上随机迭代,但使用当前节点的标记在其上随机迭代,但使用当前节点的标记在其上随机迭代,但使用当前节点的标记