Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python:使用for循环从列表中获取第n个数字_Python 3.x - Fatal编程技术网

Python 3.x Python:使用for循环从列表中获取第n个数字

Python 3.x Python:使用for循环从列表中获取第n个数字,python-3.x,Python 3.x,我需要从列表中获取每三个值,并将其添加到新列表中 这就是我目前所拥有的 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 我得到的是索引,而不是列表中

我需要从列表中获取每三个值,并将其添加到新列表中

这就是我目前所拥有的

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,87234,34,98,11,9,72]
,您应该获得
[12,34,9]


我不能以任何方式使用
skipped\u list=original\u samples[::3]

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

一艘班轮:

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

正确的、最符合逻辑的、最有效的方法是使用切片

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]

你为什么不能用切片?从你的问题中不清楚为什么不能使用
[::3]
,因为
[12,87234,34,98,11,9,72][::3]
根据需要提供
[12,34,9]
。你能解释一下这个限制的原因吗?就作业而言,我不允许使用它。我必须通过循环找到另一种方法来执行此操作。从枚举中的1开始返回错误的答案。如果需要0索引,请忽略“start=1”参数。当我发布这篇文章时,这个问题并没有明确说明。这并没有忽略第一个元素,它将所有元素移动了一个。尝试并将其与所需的输出光进行比较。没有。我的错
skipped_list = [x for i, x in enumerate(lst) if i % 3 == 0]

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