【问题标题】:Merge two lists that are generated by a python code合并由 python 代码生成的两个列表
【发布时间】:2015-05-29 21:44:34
【问题描述】:

我知道我们可以使用 final_list= list1 + list2 之类的东西来合并两个列表,但是如果列表是由 python 代码生成的,并且它们没有像 list1 和 list2 那样与它们关联的变量,我们如何合并它们?说,我的代码做了类似print output 的事情:

[1,2,3,4]
[2,0,5,6]

我想合并它们,这样我就可以使用 set(final_list) 获取唯一值。但是如何获得 final_list 呢?

PS- 我的代码可以返回多个列表。它不限于两个。

【问题讨论】:

  • 这些列表是函数生成的吗?
  • 将它们存储在一个变量中……如果它们是从函数生成的,请在函数末尾使用 return 而不是 print 然后你可以存储列表
  • 如果你 print 某事并且没有将它保存在任何地方,它就消失了。如果您想稍后使用它,请将其保存到变量中。
  • @thefourtheye 是的,它们是由函数生成的。
  • 您能否在问题中显示概括但具有代表性的代码?列表“没有与之关联的变量”,但是它们是如何创建的?

标签: python list merge set


【解决方案1】:

如果我理解正确: 你有一个返回一些列表的函数(我们暂时称它为listGen())。现在,您想将这些列表放在一个大列表中,final_list

您可以执行以下操作:

# listGen defined earlier

final_list = []
for i in listGen():
    final_list += i

unique_values = set(final_list) # or whatever you wanted to do with it

由于listGen 返回一个元组,我们可以循环遍历它的内容,即您要相互附加的列表。

【讨论】:

    【解决方案2】:

    将变量分配给函数。获取函数生成的列表,将它们连接到另一个变量中。只需确保您的函数返回生成的列表,而不仅仅是打印出来。

    # my_list_generator returns two values.
    
    >>> a, b = my_list_generator()
    >>> a
    [1, 2, 3, 4]
    >>> b
    [2, 0, 5, 6]
    >>> final_list = a + b
    >>> final_list
    [1, 2, 3, 4, 2, 0, 5, 6]
    

    把所有的都划掉!现在我知道该函数可以返回多个对象,让我们这样做(稍微了解一下列表):

    lists = [i for i in my_list_generator()]
    # lists might look like [[1, 2, 3, 4], [2, 0, 5, 6]]
    # And now use a for loop to get each value
    
    final_list = []
    for sublist in lists:
        final_list.extend(sublist)
    # final_list will look like [1,2,3,4,2,0,5,6]
    

    另外,如果您不想重复,只需再做一件事:

    real_final_list = [i for i in final_list if i not in real_final_list]
    

    【讨论】:

    • 它们是在同一个函数中生成的。
    • 抱歉,这两个列表(ab)是在同一个函数中生成的?这样生成随机列表的函数会返回 两个 列表,而不仅仅是一个?
    • @Zizouz212 你的问题不清楚。请澄清你实际拥有的东西。
    • @Marcin 对不起,我才意识到...:/
    • 抱歉我的英语不好。是的,两个列表 a 和 b 是在同一个函数中生成的。
    【解决方案3】:

    您可以修改生成输出的函数,或者手动将其转换为字符串然后转换为集合。

    list = []
    strings_of_list = output.split('\n')
    for string in strings_of_list:
        values = string[1:-1].split(',')
        for val in values:
            list+=[int(val)]    
    set(list)
    

    【讨论】:

      【解决方案4】:
      def somefunc(param):
          #does something
          return alist,blist
      
      my_alist,my_blist = somefunc(myparam)
      print my_alist, my_blist
      #prints both lists.
      

      当你从一个函数返回多个值时,它们会在一个元组中返回。您可以轻松解压元组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-29
        • 2018-05-07
        • 2015-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多