如何转换列表?

时间:2016-02-23 14:24:18

标签: python

说我有一个如下所示的列表。

['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']]
  1. 如何将列表更改为下面两个单词组合成为一个单词的列表?

    ['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese']
    
  2. 如何将1.中的转换列表中的每个术语连接成单个值,每个术语之间的空格如下所示?

     ['butter potatos cheese butter+potatos butter+cheese potatos+cheese']
    

2 个答案:

答案 0 :(得分:3)

这样的事情可能是:

>>> food = ['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']]
>>> combinations = [f if type(f) != list else '+'.join(f) for f in food]
>>> combinations
['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese']
>>> output = ' '.join(combinations)
>>> output
'butter potatos cheese butter+potatos butter+cheese potatos+cheese'

combinations被赋予列表推导的值。理解将遍历f中名为food的所有值,并检查该项是否为列表。如果它是一个列表,则列表中的字符串将join组合在一起,否则f将按原样使用。

对于输出,再次使用join方法。

答案 1 :(得分:0)

>>> say = ['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']]

>>> # 1
>>> ['+'.join(x) if isinstance(x, list) else x for x in say]
['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese']
>>> # 2
>>> [' '.join([x if isinstance(x, str) else '+'.join(x) for x in say])]
['butter potatos cheese butter+potatos butter+cheese potatos+cheese']