【问题标题】:Add a value from a list to the end of a value in another list in Python将列表中的值添加到Python中另一个列表中的值的末尾
【发布时间】:2019-11-20 21:08:22
【问题描述】:

我确信这是一项基本任务,答案在谷歌的某个地方,但我遇到的问题是我不知道这被“称为”什么,所以我很难用谷歌搜索它,几乎每个页面都展示了合并两个不符合我兴趣的列表。

我基本上有两个列表,我想将列表“add”中的值添加到列表“stuff”中每个单词的末尾并打印出来。

 add = ['123', '12345']
 stuff = ['Cars', 'Suits', 'Drinks']

期望的输出

    Cars123
    Cars12345
    Suits123
    Suits12345
    Drinks123
    Drinks12345

在此先感谢,再次对糟糕的研究表示歉意。

【问题讨论】:

    标签: python-3.x list loops


    【解决方案1】:

    有什么理由不能只使用嵌套循环吗?这当然是最简单的解决方案。

    for i in stuff:
        for j in add:
            print(i+j)
    

    给予

    Cars123
    Cars12345
    Suits123
    Suits12345
    Drinks123
    Drinks12345
    

    这假定两个列表都是字符串。

    顺便说一句,像 add 这样的隐藏函数名称对于变量来说通常是一个坏主意,所以我会考虑改变它。

    【讨论】:

    • 感谢嵌套循环和反馈,这有效。嵌套循环有什么缺点吗?
    • @Gustaf 不,与其他答案中建议的 itertools 方法相比,您甚至可能会看到这种方法的一些性能优势。
    • @nathan.medz:你说得对,我在答案中添加了时间信息。
    【解决方案2】:

    忽略我在评论中所说的组合!

    >>> from itertools import product
    >>> add = ['123', '12345']
    >>> stuff = ['Cars', 'Suits', 'Drinks']
    >>> for a, s in product(add, stuff):
    ...     a+s
    ...     
    '123Cars'
    '123Suits'
    '123Drinks'
    '12345Cars'
    '12345Suits'
    '12345Drinks'
    

    附录:时序信息:这段代码将嵌套循环与itertools 中的product 函数进行比较,确实表明后者需要更多时间,比例约为2.64

    import timeit
    
    def approach_1():
        add = ['123', '12345']; stuff = ['Cars', 'Suits', 'Drinks']
        for a in add:
            for s in stuff:
                a+s
    
    def approach_2():
        from itertools import product
        add = ['123', '12345']; stuff = ['Cars', 'Suits', 'Drinks']
        for a, s in product(add, stuff):
            a+s
    
    t1 = timeit.timeit('approach_1()','from __main__ import approach_1', number=10000)
    t2 = timeit.timeit('approach_2()','from __main__ import approach_2', number=10000)
    
    print (t2/t1)
    

    【讨论】:

    • 谢谢,我在 Itertools 上做了一些谷歌搜索,看起来像一个不错的库。嵌套循环似乎更容易一些,尽管嵌套可能有一些缺点(?)。
    • @Gustaf:老实说,我不知道,我得对这两段代码进行计时。
    • @Gustaf:我在附录中添加了时间安排。
    【解决方案3】:

    为此,您需要两个 for 循环:

    for stuff_element in stuff:
        for add_element in add:
             print(stuff_element+add_elements)
    

    【讨论】:

    • 非常感谢马科斯,嵌套循环似乎是我应该搜索的东西。
    • 很好,希望对您有所帮助。
    【解决方案4】:

    试试这个:

    for i in stuff:
        for j in add:
            print(i+j)
    

    让我知道它是否有效

    【讨论】:

    • 嗨 Anirudh,它输出“Cars123”和“Suits12345”
    • 是的,我的错。我编辑了答案。顺便说一句,如果你还没有找到它的名字,它 - 同时遍历多个列表。使用来自 itertools 的 zip - 看起来很简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2011-08-13
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多