【问题标题】:Python - Combining two lists of strings to create a matrix/table of their combinationsPython - 组合两个字符串列表以创建它们组合的矩阵/表
【发布时间】:2014-12-03 16:33:11
【问题描述】:

这是我的问题:

list1 = ['cake', 'pie', 'bread']
list2 = ['blue', 'red', 'yellow']

我想制作一个矩阵/表格/数据框,它采用这两个列表并创建列表中字符串的每个排列。

newTable = 
                 cake       pie        bread     #ColumnHeader
#Index
blue           cake blue    pie blue    bread blue
red            cake red     pie red     bread red
yellow         cake yellow  pie yellow  bread yellow

List 1(也是列标题)对应于该字符串对中的第一个单词,而 List 2(索引)是第二个单词。

我想在 python 中执行此操作,但如果 matlab 更容易,那很好。谢谢!

编辑 - 不是每个排列,而是列标题是第一个单词而索引是第二个单词的每个排列。

【问题讨论】:

    标签: python string list dataframe


    【解决方案1】:

    您可以为此使用itertools.product

    >>> from itertools import product
    >>> list1 = ['cake', 'pie', 'bread']
    >>> list2 = ['blue', 'red', 'yellow']
    >>> list(product(list1, list2))
    [('cake', 'blue'), ('cake', 'red'), ('cake', 'yellow'),
     ('pie', 'blue'), ('pie', 'red'), ('pie', 'yellow'),
     ('bread', 'blue'), ('bread', 'red'), ('bread', 'yellow')]
    

    如果您想构建一个可以索引的二维列表,例如[0][1]

    >>> [[(i,j) for i in list1] for j in list2]
    [[('cake', 'blue'), ('pie', 'blue'), ('bread', 'blue')],
     [('cake', 'red'), ('pie', 'red'), ('bread', 'red')],
     [('cake', 'yellow'), ('pie', 'yellow'), ('bread', 'yellow')]]
    

    【讨论】:

    • 感谢网络。我知道如何组合这样的两个列表,但最重要的是(至少对我而言)正在制作索引为列表 2 且行标题为列表 1 的表。
    • 谢谢!这样就可以了!
    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多