リストを開梱する方法は?
-
29-09-2019 - |
質問
この方法でリストからデータを抽出するとき
line[0:3], line[3][:2], line[3][2:]
予想されるように、次のように配列と2つの変数を受け取ります。
(['a', 'b', 'c'], 'd', 'e')
最終結果が次のようにリストを操作する必要があります
('a', 'b', 'c', 'd', 'e')
どのように?ありがとうございました。
PSはい、私は最初の要素を次のように書き留めることができることを知っています line[0], line[1], line[2]
, 、しかし、それはかなり厄介な解決策だと思います。
解決
from itertools import chain
print tuple(chain(['a', 'b', 'c'], 'd', 'e'))
出力:
('a', 'b', 'c', 'd','e')
他のヒント
これを試して。
line = ['a', 'b', 'c', 'de']
tuple(line[0:3] + [line[3][:1]] + [line[3][1:]])
('a', 'b', 'c', 'd', 'e')
注:スライスロジックには面白いビジネスがあると思います。 [2:]が文字を返す場合、[:2]は2文字を返す必要があります。入力行を提供してください。
明白な答え:最初の行の代わりに、次のことを行います。
line[0:3] + [line[3][:2], line[3][2:]]
それはそれを仮定して機能します line[0:3]
リストです。それ以外の場合は、マイナーな調整を行う必要がある場合があります。
この機能
def merge(seq):
merged = []
for s in seq:
for x in s:
merged.append(x)
return merged
def is_iterable(i):
return hasattr(i,'__iter__')
def iterative_flatten(List):
for item in List:
if is_iterable(item):
for sub_item in iterative_flatten(item):
yield sub_item
else:
yield item
def flatten_iterable(to_flatten):
return tuple(iterative_flatten(to_flatten))
これは、あらゆるレベルのネストに機能するはずです
所属していません StackOverflow