0

私は式を書く必要があり、完全に立ち往生しています。私は正しく書いたと思うコードの一部を持っていますが、残りの部分に固執しています。インデックス 0 から始まるリストの 3 番目の要素をすべて含む新しいリストを返すコードが必要です。

例:リスト[0, 1, 2, 3, 4, 5]がある場合、それを返す必要があります[0, 3]

私がこれまでに持っているコードは次のとおりです。

result = []
i = 0
while i < len(L):
    result.append(L[i])
    i = 
return result

i =このコードが機能するために必要な式を誰かが理解するのを手伝ってくれませんか。

4

5 に答える 5

9

まず、拡張スライス表記法を使用して作業を簡単にすることができます。

In [1]: l = [0, 1, 2, 3, 4, 5]

In [2]: l[::3]
Out[2]: [0, 3]

ドキュメントから:

一部のシーケンスは、3 番目の「ステップ」パラメーターで「拡張スライス」もサポートします。 a[i:j:k] は、インデックス x を持つ a のすべてのアイテムを選択します。ここで、x = i + n*k、n >= 0 および i <= x です。 < j.

コード サンプルに関しては、おそらくi = i + 3ori += 3そこが必要です。

于 2012-11-18T11:00:36.290 に答える
1

もう 1 つの方法は、 を使用することenumerateです。

[j for i, j in enumerate([0, 1, 2, 3, 4, 5]) if i % 3 == 0]
于 2012-11-18T11:05:23.190 に答える
1

これにより、反復可能なシーケンスが得られます。

import itertools

l = [0, 1, 2, 3, 4, 5]
itertools.islice(l, 0, None, 3)

リストにするには、list() 関数を使用します。

impiort itertools

def get_sublist(l):
    return list(itertools.islice(l, 0, None, 3))
于 2012-11-18T11:06:55.357 に答える
1

多分これを試してください:

result = []
for i in range(0, len(L), 3):
    result.append(L[i])
return result
于 2012-11-18T11:02:36.037 に答える
0
    python 3.2
    one way:
    >>> [i for i in range(0,len(L),3)]
    [0,3]


    your method:
    result = []
    i = 0
    while i <= len(L):
       result.append(L[i])
       i+=3
    return result
于 2012-11-18T14:58:16.377 に答える