对列表列表进行分组的 Pythonic 方法?
Pythonic way to group a list of lists?
所以假设我在 Python
中有一个假设的文件名列表,定义如下:
l = [["user1/stats1.csv", "user1/stats2.csv", "user1/stats3.csv"],
["user2/stats1.csv", "user2/stats2.csv", "user2/stats3.csv"]]
按照 statsN.csv
中的数字对它进行分组的最 pythonic 方法是什么,这样列表看起来像:
l = [["user1/stats1.csv", "user2/stats1.csv"],
["user1/stats2.csv", "user2/stats2.csv"],
["user1/stats3.csv", "user2/stats3.csv"],
作为参考,原始列表是通过使用 glob
和 *
通配符 a la glob.glob("user1/stats*.csv")
和 glob.glob("user2/stats*.csv")
获得的
您可以解压缩子列表和 zip
:
out = list(map(list, zip(*l)))
输出:
[['user1/stats1.csv', 'user2/stats1.csv'],
['user1/stats2.csv', 'user2/stats2.csv'],
['user1/stats3.csv', 'user2/stats3.csv']]
如果你使用的是 numpy,你可以简单地转置:
>>> np.array(l).T.tolist()
[['user1/stats1.csv', 'user2/stats1.csv'],
['user1/stats2.csv', 'user2/stats2.csv'],
['user1/stats3.csv', 'user2/stats3.csv']]
所以假设我在 Python
中有一个假设的文件名列表,定义如下:
l = [["user1/stats1.csv", "user1/stats2.csv", "user1/stats3.csv"],
["user2/stats1.csv", "user2/stats2.csv", "user2/stats3.csv"]]
按照 statsN.csv
中的数字对它进行分组的最 pythonic 方法是什么,这样列表看起来像:
l = [["user1/stats1.csv", "user2/stats1.csv"],
["user1/stats2.csv", "user2/stats2.csv"],
["user1/stats3.csv", "user2/stats3.csv"],
作为参考,原始列表是通过使用 glob
和 *
通配符 a la glob.glob("user1/stats*.csv")
和 glob.glob("user2/stats*.csv")
您可以解压缩子列表和 zip
:
out = list(map(list, zip(*l)))
输出:
[['user1/stats1.csv', 'user2/stats1.csv'],
['user1/stats2.csv', 'user2/stats2.csv'],
['user1/stats3.csv', 'user2/stats3.csv']]
如果你使用的是 numpy,你可以简单地转置:
>>> np.array(l).T.tolist()
[['user1/stats1.csv', 'user2/stats1.csv'],
['user1/stats2.csv', 'user2/stats2.csv'],
['user1/stats3.csv', 'user2/stats3.csv']]