Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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
转换3d列表(Python)_Python - Fatal编程技术网

转换3d列表(Python)

转换3d列表(Python),python,Python,如何转换3d列表m4c,以获得所需的输出 m4c = [[['A ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], ['B ', ' ', ' ', ' '], ['C ', ' ', ' ', ' ', ' ', ' ', ' ', ' \n']], [['E ', 'F#', 'E ', 'E ', 'F#', 'E ', ' ', 'E '], ['E ', 'F#', 'E ', 'E '], ['E ', 'F#',

如何转换3d列表
m4c
,以获得所需的输出

m4c = [[['A ', '  ', '  ', '  ', '  ', '  ', '  ', '  '], ['B ', '  ', '  ', '  '], ['C ', '  ', '  ', '  ', '  ', '  ', '  ', '  \n']],    [['E ', 'F#', 'E ', 'E ', 'F#', 'E ', '  ', 'E '], ['E ', 'F#', 'E ', 'E '], ['E ', 'F#', 'E ', 'E ', 'F#', '  ', 'E ', 'F#']]]
期望输出:

[[['A ','E '], ['  ','F#'], ['  ','E '], ['  ','E '], ['  ','F#'], ['  ','E '], ['  ','  '], ['  ','E ']], 
 [['B ','E '], ['  ','F#'], ['  ','E '], ['  ','E ']],
 [['C ','E '], ['  ','F#'], ['  ','E '], ['  ','E '], ['  ','F#'], ['  ','E '], ['  ','  '], ['  ','E ']]]

这看起来与我期望的输出基本匹配:

>>> pprint(m4c)
[[['A ', '  ', '  ', '  ', '  ', '  ', '  ', '  '],
  ['B ', '  ', '  ', '  '],
  ['C ', '  ', '  ', '  ', '  ', '  ', '  ', '  \n']],
 [['E ', 'F#', 'E ', 'E ', 'F#', 'E ', '  ', 'E '],
  ['E ', 'F#', 'E ', 'E '],
  ['E ', 'F#', 'E ', 'E ', 'F#', '  ', 'E ', 'F#']]]
>>> trans = list(zip(*x) for x in zip(*m4c))
>>> pprint(trans)
[[('A ', 'E '),
  ('  ', 'F#'),
  ('  ', 'E '),
  ('  ', 'E '),
  ('  ', 'F#'),
  ('  ', 'E '),
  ('  ', '  '),
  ('  ', 'E ')],
 [('B ', 'E '), ('  ', 'F#'), ('  ', 'E '), ('  ', 'E ')],
 [('C ', 'E '),
  ('  ', 'F#'),
  ('  ', 'E '),
  ('  ', 'E '),
  ('  ', 'F#'),
  ('  ', '  '),
  ('  ', 'E '),
  ('  \n', 'F#')]]

我不知道您的
m4c[0][2]
是否正确:
['C'、''、''、''、''、''、''、'\n']
,但如果它和元组对您来说合适,那么一个简单的解决方案可以是:

>>> [zip(m4c[0][i], m4c[1][i]) for i in range(len(m4c[0]))]
[[('A ', 'E '), ('  ', 'F#'), ('  ', 'E '), ('  ', 'E '), ('  ', 'F#'), ('  ', 'E '), ('  ', '  '), ('  ', 'E ')],\
 [('B ', 'E '), ('  ', 'F#'), ('  ', 'E '), ('  ', 'E ')], \
 [('C ', 'E '), ('  ', 'F#'), ('  ', 'E '), ('  ', 'E '), ('  ', 'F#'), ('  ', '  '), ('  ', 'E '), ('  \n', 'F#')]]
或更一般的:

>>> [zip(*[m4c[j][i] for j in range(len(m4c))]) for i in range(len(m4c[0]))]

该线程是我的,但我不知道如何转换一般(我有多个输入列表)。