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]