Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_For Loop - Fatal编程技术网

Python 清理笨重的线圈

Python 清理笨重的线圈,python,arrays,for-loop,Python,Arrays,For Loop,我正在寻找一个更好的方法来清理这个笨重的鸟巢 names = ['name1', 'name2', 'name3', ...] values = [[1, 2, 3, ...], [10, 20, 30, ...], [100, 200, 300, ...]] for i in range(len(values[0])): for name, value in zip(names, values): print(name, value[i]) 输出: name1 1

我正在寻找一个更好的方法来清理这个笨重的鸟巢

names = ['name1', 'name2', 'name3', ...]
values = [[1, 2, 3, ...], [10, 20, 30, ...], [100, 200, 300, ...]]

for i in range(len(values[0])):
    for name, value in zip(names, values):
        print(name, value[i])
输出:

name1 1
name2 10
name3 100
name1 2
name2 20
name3 200
name1 3
name2 30
name3 300
...
上面的代码段给出了所需的输出,但肯定不是很符合Python的。

尽管您可以这样做:

这将生成此值列表:

['name1 1', 'name2 10', 'name3 100', 'name1 2', 'name2 20', 'name3 200', 'name1 3', 'name2 30', 'name3 300']
我不认为将所有内容都压入一个单一的列表理解中本质上更像是一种蟒蛇式的理解。这是一个巧妙的小把戏,但不是一个进步

保持嵌套循环,它们是直截了当的,可读性强,不会让你未来的自我感到头疼


假设您的值列表是静态的,就像您的示例所示,我也不认为这是一个很大的改进

names = ['name1', 'name2', 'name3']
values = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]

[name + ' ' + str(value[i]) for i in range(len(values[0])) for name, value in zip(names, values)]

此功能通常会有所帮助:

def nested_indices(lol, indices_so_far=None):
    indices_so_far = indices_so_far or []
    if not isinstance(lol, list):
        yield indices_so_far
        return
    for i in range(len(lol)):
        for ni in nested_indices(lol[i], indices_so_far + [i]):
            yield ni
现在你可以做这样的事情:

for i,j in nested_indices(values):
  print(names[i], values[i][j])

打印([(名称,值[i])表示名称,zip中的值(名称,值)表示范围内的值(len(值[0]))))
?可能重复谢谢,我想我会使用此列表。
for i,j in nested_indices(values):
  print(names[i], values[i][j])