Python 选择列表中的每n个元素,使用n个有理数/非整数

Python 选择列表中的每n个元素,使用n个有理数/非整数,python,logic,Python,Logic,现在我想从这个列表中选择第n个元素。 假设n是理性的。这里:n=7/3=2.333 因此,新列表的大小应为原始列表的42,85%(1/n)。 但我不希望元素被随机选择。所选元素之间的间距应该相似,但不一定总是完全相同 结果可能因您使用的算法而异,只要算法满足要求,则由您决定。但为了回答这一评论,下面是一个结果的例子: int_list = list(range(1000)) # list [0, 1, 2, 3, 4, ..., 999] out\u list的大小是int\u list的4

现在我想从这个列表中选择第n个元素。 假设n是理性的。这里:n=7/3=2.333

因此,新列表的大小应为原始列表的42,85%(1/n)。 但我不希望元素被随机选择。所选元素之间的间距应该相似,但不一定总是完全相同

结果可能因您使用的算法而异,只要算法满足要求,则由您决定。但为了回答这一评论,下面是一个结果的例子:

int_list = list(range(1000))  # list [0, 1, 2, 3, 4, ..., 999]

out\u list
的大小是
int\u list
的45.4545…%,虽然不是42,85%,但它是最接近的。

一种相当通用的方法,其中列表不必包含int范围,并且有理值甚至可以小于1:

int_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
out_list = [0, 2, 4, 8, 10]

一种相当通用的方法,其中列表不必包含int范围,并且rational值甚至可以小于1:

int_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
out_list = [0, 2, 4, 8, 10]

按分母缩放范围,按分子步进,按分母向下缩放:

N = 7
D = 3

k = 0
result = []
for i in int_list:
    k += D
    while k >= N:
        result.append(i)
        k -= N

您的示例是一个范围,而不是列表。如果您确实有一个列表,那么只需使用我的数字作为索引,即,而不是
i//3
do
a[i//3]

按分母缩放范围,按分子步进,按分母向下缩放:

N = 7
D = 3

k = 0
result = []
for i in int_list:
    k += D
    while k >= N:
        result.append(i)
        k -= N
您的示例是一个范围,而不是列表。如果您真的有一个列表,那么只需使用我的数字作为索引,即,而不是
i//3
do
a[i//3]

从数学导入楼层
def every_n(lst:list,n:int)->list:
l=[]
i=0
而i
>>每隔(范围(1000),7/3)
[0, 2, 4, 7, 9, 11, 14, 16, 18, 21, 23, 25, 28, 30, 32, 35, ..., 991, 994, 996, 998]
一个天真的想法是

从数学导入楼层
def every_n(lst:list,n:int)->list:
l=[]
i=0
而i
>>每隔(范围(1000),7/3)
[0, 2, 4, 7, 9, 11, 14, 16, 18, 21, 23, 25, 28, 30, 32, 35, ..., 991, 994, 996, 998]

该示例的预期结果是什么?整数之间怎么会有非整数间隔?我包括了一个示例,@6缺失,所以不是每秒钟一个元素。啊,遗漏了。可能比更多类似的差距更难产生。还为什么要再举一个例子,而不是只回答完美的第一个?这个例子的预期结果是什么?整数之间怎么会有一个非整数的间隔?我包括了一个例子,@6缺失,所以不是每一个第二个元素。啊,遗漏了。可能比更多类似的差距更难产生。还为什么要再举一个例子,而不是只回答第一个完美的例子?