在 Python 中,我收到了這樣的型別 zip 作為輸入:
[
('ef', ['c', 'b', 'a']),
('a', ['b']),
('ab', ['c']),
('b', ['c']),
('c', ['c', 'a']),
]
我必須連接同一專案中的元素并創建一個新的字串串列。預期的輸出是:
['efc', 'efb', 'efa', 'ab', 'abc', 'bc', 'cc', 'ca']
請注意,第一個元素生成三個不同的字串,最后一個元素生成兩個字串。問題是這些專案,因為它有多個元素要連接。我嘗試使用 join 命令,但它不起作用。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
使用嵌套理解:
>>> zipped = [
('ef', ['c', 'b', 'a']),
('a', ['b']),
('ab', ['c']),
('b', ['c']),
('c', ['c', 'a']),
]
>>> [pre s for pre, suf in zipped for s in suf]
['efc', 'efb', 'efa', 'ab', 'abc', 'bc', 'cc', 'ca']
如果這種理解乍一看沒有意義,可以把它想象成一個嵌套for回圈:
>>> for pre, suf in zipped:
... for s in suf:
... print(pre s)
...
efc
efb
efa
ab
abc
bc
cc
ca
uj5u.com熱心網友回復:
您可以使用itertools.chain,并itertools.product沿str.join此:
data = [('ef', ['c', 'b', 'a']), ('a', ['b']), ('ab', ['c']), ('b', ['c']), ('c', ['c', 'a'])]
list(chain.from_iterable(map(''.join, product([s], li)) for s, li in data))
['efc', 'efb', 'efa', 'ab', 'abc', 'bc', 'cc', 'ca']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/323624.html
