'How do I select 1/3 of a number sequence?
I am trying to come up with an algorithm that will select 1 out of every 3 entries in a number sequence from 10 to 3010 and store it in a list in Python.
I have tried using an additional counter number that starts at 1, increments by one for every iteration of the sequence, and then gets reset back to 1 once it reaches the value of 4. The idea is that every time the counter is set 1, it will add a number from the sequence into my list:
excluded_values = []
i = 1
for index in range(10,3010):
if i == 1:
excluded_values.append(index)
i += 1
if i == 4:
i = 1
The problem is that when I request to print out the result of excluded values, I simply get the response of 10.
excluded_values
10
Solution 1:[1]
Your code does not work because the i += 1 is performed only with the condition i == 1. This means that i assumes only values of 1 and 2, and never reaches the value of 4, and hence also never again the value 1. Here I amended your code, although I prefer the solution with range(10, 3010, 3) suggested in the comments.
excluded_values = []
i = 1
for index in range(10,3010):
if i == 1:
excluded_values.append(index)
if i == 3:
i = 0
i += 1
print(excluded_values)
Solution 2:[2]
when we already know the range, why run through each number in range and instead take steps. It produces the same result but faster
excluded_values = []
idx = 10
last_val = 3010
step = 3
while idx <= last_val:
excluded_values.append(idx)
idx+=step
print(excluded_values)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Giovanni Tardini |
| Solution 2 | Naveed |
