web-dev-qa-db-ja.com

最初の要素の後の他のすべての要素をスキップする

私はJavaでこれを行う方法の一般的なアイデアを持っていますが、Pythonとそれを行う方法がわかりません。

最初の要素から始めて、リストの他のすべての要素を含むリストを返す関数を実装する必要があります。

これまでのところ、Pythonのforループがどのように異なるかを学んでいるので、ここからどうすればよいかわかりません。

def altElement(a):
    b = []
    for i in a:
        b.append(a)

    print b
40
seiryuu10
def altElement(a):
    return a[::2]
58

スライス表記_a[start_index:end_index:step]_

_return a[::2]
_

ここで、_start_index_のデフォルトは_0_であり、_end_index_のデフォルトはlen(a)です。

54
Darius Bacon

または、次のこともできます。

for i in range(0, len(a), 2):
    #do something

ただし、拡張スライス表記isははるかに簡潔です。

14
Joel Cornett
items = range(10)
print items
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print items[1::2] # every other item after the second; slight variation
>>> [1, 3, 5, 7, 9]
]
4
jdi
b = a[::2]

これは 拡張スライス構文 を使用します。

3
John Zwinck

猫の皮を剥ぐ方法は1つ以上あります-Seba Smith

arr = list(range(10)) # Range from 0-9

# List comprehension: Range with conditional
print [arr[index] for index in range(len(arr)) if index % 2 == 0]

# List comprehension: Range with step
print [arr[index] for index in range(0, len(arr), 2)]

# List comprehension: Enumerate with conditional
print [item for index, item in enumerate(arr) if index % 2 == 0]

# List filter: Index in range
print filter(lambda index: index % 2 == 0, range(len(arr)))

# Extended slice
print arr[::2]
3
Mr. Polywhirl

あなたが持っているようにforループを使用して、1つの方法はこれです:

def altElement(a):
    b = []
    j = False
    for i in a:
        j = not j
        if j:
            b.append(i)

    print b

jは、0と1の間で切り替えを続け、bに要素を追加するタイミングを追跡します。

0
bchurchill