如何在python中递归调用函数,将列表中的每个元素放到底部?
例如,如果我的原始嵌套列表是:如何在python中递归调用函数,将列表中的每个元素放到底部?,python,python-3.x,list,recursion,Python,Python 3.x,List,Recursion,例如,如果我的原始嵌套列表是: [[' ', 'Y', ' ', 'X'], ['S', ' ', 'V', ' '], ['T', 'X', 'Y', 'S'], ['X', ' ', 'X', 'Y']] 我希望结果是: [[' ', ' ', ' ', ' '], ['S', ' ', 'V', 'X'], ['T', 'Y', 'Y', 'S'], ['X', 'X', 'X', 'Y']] 因此,基本上把所有字母都放在底部,而不去掉任何空格,保持列表的结构 这
[[' ', 'Y', ' ', 'X'],
['S', ' ', 'V', ' '],
['T', 'X', 'Y', 'S'],
['X', ' ', 'X', 'Y']]
我希望结果是:
[[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']]
因此,基本上把所有字母都放在底部,而不去掉任何空格,保持列表的结构
这是我到目前为止所拥有的。
我的结果告诉我这是不正确的
[[' ', ' ', ' ', ' '],
['S', 'Y', 'V', 'X'],
['T', ' ', 'Y', 'S'],
['X', 'X', 'X', 'Y']]
你可以试试这个
您需要将每列中的“全部”向上推,并将所有其他字符向下放置以保持顺序。您可以在这里使用排序
要对可与函数一起使用的列进行更简单的操作,请执行以下操作:
m = np.array([[' ', 'Y', ' ', 'X'],
['S', ' ', 'V', ' '],
['T', 'X', 'Y', 'S'],
['X', ' ', 'X', 'Y']])
np.apply_along_axis(lambda c: [' '] * list(c).count(' ') + [e for e in c if e != ' '],0 ,m)
np.apply_along_axis(lambda c: [' '] * list(c).count(' ') + [e for e in c if e != ' '],0 ,m).tolist()
输出:
array([[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']], dtype='<U1')
[[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']]
输出:
array([[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']], dtype='<U1')
[[' ', ' ', ' ', ' '],
['S', ' ', 'V', 'X'],
['T', 'Y', 'Y', 'S'],
['X', 'X', 'X', 'Y']]