0

与えられた値のリスト:

data = [100, 80, 200, 20, 300, 100, 400, 40, 500, 120, 600, 60]

最初の 2 つの値と最後の 2 つの値を抽出して、新しいリストを作成したいと考えています。残念ながら、私が現在行っている方法では、2 つのリストを含むリストを取得します。

bla = [data[0:2], data[-2:]]

print bla
 [[100, 80], [600, 60]]

代わりに、これを取得したいと思います:

[100, 80, 600, 60]

これを行う簡単な方法はありますか?

(この質問はこの質問に多少関連していますが、それでも十分に異なると思います)

4

5 に答える 5

7

リスト連結を次のように使用します+

data[0:2] + data[-2:]
于 2012-06-12T12:40:13.427 に答える
5

+2 つのサブリストを連結するために使用します。

bla = data[:2] + data[-2:]

bla
[100, 80, 600, 60]
于 2012-06-12T12:40:34.327 に答える
3

これを使って:

bla = data[0:2] + data[-2:]
print bla
[100, 80, 600, 60]
于 2012-06-12T12:40:24.530 に答える
2

複数の iterable を組み合わせる別の方法は、 を使用itertools.chainしてイテレータを作成することです。

import itertools
extractediter = itertools.chain(data[0:2], data[-2:])

イテレータ自体は新しいリストを作成しませんが、リストと同じようにウォークオーバーできる構造を提供します。

for x in extractediter:
    print x

または合計を計算します。

extractedtotal = sum(extractediter)

イテレータはコピーを作成せず、一度に各リスト項目にアクセスする移動プレースホルダーを作成するだけなので、大きなリストまたはサブリストを作成する場合、これは利点となります。欠点は、反復子がジェネレーター式に似ていることです。1 回しか実行できず、その後は「消費された」と言われます。

本当に別のリストが必要な場合は、これをlist型コンストラクターに渡します

extractedlist = list(extractediter)
于 2012-06-12T12:54:12.807 に答える
0
newdata = []
newdata.extend(data[:2])
newdata.extend(data[-2:])
于 2012-06-12T12:45:46.583 に答える