我有一个对象,其中包含一个值和一个列表。现在我有了这些对象的列表,并希望将所有值和列表连接到一个大列表中。
这是我目前的状态:
class Language:
def __init__(self, name, code, *args):
self.name = name
self.code = code
self.alt = args
language_list = [Language("Deutsch", "deu", "de", "ger"),
Language("Español", "spa", "es"),
Language("English", "eng", "en"),
Language("Svenska", "swe", "sv"),
Language("Dansk", "dan", "da"),
Language("ﺎﻠﻠﻏﺓ ﺎﻠﻋﺮﺒﻳﺓ", "ara", "ar"),
Language("Italiano", "ita", "it"),
Language("Français", "fra", "fr")]
print([[ lang.code ] + list(lang.alt) for lang in languages_list])
这将返回一个二维数组:
[["deu", "de", "ger"], ["spa", "es"], ["eng", "en"]…
现在有没有一种方法,可以将其合并到一个大列表中,或者基本上执行 [].extend()
而不是 [].append()
每次迭代。
最佳答案
不,你要么必须像这样展平
print([item for lang in languages_list for item in [lang.code] + list(lang.alt)])
或者
from itertools import chain
print([item for lang in languages_list for item in chain([lang.code], lang.alt)])
我更喜欢 itertools.chain
方法,因为它不必创建一个长列表,以防您的 lang.alt
很长。
关于python - 使用列表理解在每次迭代中返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23323675/