说我有一个如下所示的列表。
['butter', 'potatos', 'cheese', ['butter', 'potatos'], ['butter', 'cheese'], ['potatos', 'cheese']]
如何将列表更改为下面两个单词组合成为一个单词的列表?
['butter', 'potatos', 'cheese', 'butter+potatos', 'butter+cheese', 'potatos+cheese']
如何将1.中的转换列表中的每个术语连接成单个值,每个术语之间的空格如下所示?
['butter potatos cheese butter+potatos butter+cheese potatos+cheese']
答案 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']