展平包含子列表的字符串列表 [英] Flatten a list of strings which contains sublists
本文介绍了展平包含子列表的字符串列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 strings
的 list
,其中包含一个 sublist
os strings
:
I have a list
of strings
which contains a sublist
os strings
:
ids = [u'spotify:track:3ftnDaaL02tMeOZBunIwls', u'spotify:track:4CKjTXDDWIrS0cwSA9scgk', [u'spotify:track:6oRbm1KOqskLTFc1rvGi5F',
u'spotify:track:045sp2JToyTaaKyXkGejPy']]
我试图用以下方法使其扁平化:
I tried to flatten it with:
[item for item in ids for item in sublist]
和
chain = itertools.chain(ids)
但是这些解决方案会分割字符串...
but these solutions split the strings...
如何将原始的列表
展平为
[u'spotify:track:3ftnDaaL02tMeOZBunIwls', u'spotify:track:4CKjTXDDWIrS0cwSA9scgk', u'spotify:track:6oRbm1KOqskLTFc1rvGi5F',u'spotify:track:045sp2JToyTaaKyXkGejPy']
?
推荐答案
您可以使用带有 isinstance
检查的简单循环.
You could use a simple loop with an isinstance
check.
out = []
for i in ids:
if isinstance(i, list):
out.extend(i)
else:
out.append(i)
print(out)
输出:
['spotify:track:3ftnDaaL02tMeOZBunIwls',
'spotify:track:4CKjTXDDWIrS0cwSA9scgk',
'spotify:track:6oRbm1KOqskLTFc1rvGi5F',
'spotify:track:045sp2JToyTaaKyXkGejPy']
您还可以使用 itertools.chain
,但需要额外的预处理层:
You could also use itertools.chain
, but with an extra layer of preprocessing:
from itertools import chain
out = list(chain.from_iterable([i if isinstance(i, list) else [i] for i in ids]))
print(out)
具有相同的输出.
这篇关于展平包含子列表的字符串列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文