Python:使用for循环从列表中获取第N个数字

时间:2018-10-03 02:51:01

标签: python-3.x

我需要从列表中获取每个第3个值并将其添加到新列表中。

这是我到目前为止所拥有的。

def make_reduced_samples(original_samples, skip):

    skipped_list = []

    for count in range(0, len(original_samples), skip):

        skipped_list.append(count)

    return skipped_list

skip等于3

我得到索引而不是列表中数字的值。

它给了我[0,3,6]。列表中的索引是哪些,而不是索引的值。

给出的示例是:

在此列表[12,87,234,34,98,11,9,72]中,您应该获得[12,34,9]

我不能以任何方式使用skipped_list = original_samples[::3]

3 个答案:

答案 0 :(得分:0)

您需要在索引处附加original_samples数组的值。不是索引(计数)本身。

def make_reduced_samples(original_samples, skip):

    skipped_list = []

    for count in range(0, len(original_samples), skip):

        skipped_list.append(original_samples[count])

    return skipped_list

答案 1 :(得分:0)

正确,最pythonic,最有效的方法是使用切片。

lst = [12, 87, 234, 34, 98, 11, 9, 72]

skipped_list = lst[::3]

print(skipped_list)  # [12, 34, 9]

如果该步骤不遵循线性关系(在此处这样做),则可以将列表理解与enumerate一起使用以对索引进行过滤。

skipped_list = [x for i, x in enumerate(lst) if i % 3 == 0]

print(skipped_list)  # [12, 34, 9]

答案 2 :(得分:-1)

一个班轮:

skipped_list = [j for (i,j) in enumerate(original_samples, start=1) if i % 3 == 0]