关于在一系列数中取几个数的问题,求帮忙,谢谢
关于在一系列数中取几个数的问题,求帮忙,谢谢lng = range(0,x) #要取数的长度
gap = 31 #gap表示要在整个lng中取的个数(这里是31)
gap_list = [] #储存取的gap(31)个数, #其中最开始或最后的数,必取,其它按间隔取29个数,如果不足,就全取。
总的说,lng只有31个数以内,就全取;
大于31个数,就取['第一个数',..(中间取间隔大致相当的29个数)...,'最后一个数']
求大师帮忙,谢谢 本帖最后由 歌者文明清理员 于 2023-4-16 13:35 编辑
根据您的描述,你可以按照以下步骤取数:
[*]如果 x <= 31,那么直接取所有的数字。
[*]如果 x > 31,则需要从序列中选择 31 个数字。其中,最开始和最后的数字必须被选中。其余数字根据固定间隔选取。
具体实现代码可以如下所示:
# 第一步
if x <= gap:
gap_list = list(lng)
# 第二步
else:
gap_list.append(0)# 加入第一个数
# 计算要选几个数,以及每个数之间的间隔
num_of_gaps = gap - 2
gap_size = (x - 1) // num_of_gaps
# 按照间隔选取数值
index = gap_size + 1
while len(gap_list) < gap - 1:
gap_list.append(lng)
index += gap_size
gap_list.append(x - 1)# 加入最后一个数
在这段代码中,我们使用了列表 gap_list 来保存选取的数值。一开始,我们将 0 添加到 gap_list 中(即第一个数),然后计算出剩余应该选取的数的数量并计算其间隔大小。然后,按照相应的间隔,从原始序列 lng 中选取数值并添加到 gap_list 中。最后,将 x-1 (即最后一个数)添加到 gap_list 中。
希望这可以帮助到您。 您好!这里给您提供一个Python函数,可以实现您所需要的功能:
def get_numbers(lng, gap):
gap_list = []
if len(lng) <= gap:
gap_list = lng
else:
# 从第一个数到倒数第二个数,每隔step取一个数,共取gap-2个数
step = (len(lng) - 1) // (gap - 1)
for i in range(0, len(lng) - 1, step):
gap_list.append(lng)
# 添加最后一个数
gap_list.append(lng[-1])
return gap_list
x = 100
lng = range(0, x)
gap = 31
gap_list = get_numbers(lng, gap)
print(gap_list)
这段代码定义了一个get_numbers函数,它接收两个参数:lng是您要从中取数的数列,gap是您希望取得的数的个数。该函数首先检查lng中的元素个数是否小于等于gap,如果是,则直接返回lng;否则,计算间隔step,并从第一个数开始,每隔step取一个数,直到倒数第二个数。最后,将最后一个数添加到列表中。
在示例代码中,我们设置x为100,lng为从0到99的整数序列,gap为31。调用get_numbers函数后,我们将得到一个包含31个元素的列表,其中第一个和最后一个元素分别是0和99,中间还有29个元素,它们在原序列中的间隔尽量相等。 本帖最后由 futui 于 2023-4-16 15:38 编辑
我在大师的基础上,作如下改进:但程序还是不能运行。
我的大致思路是:
取整作为步长
取余,每次把它取1,加到对应索引里去,直到余数为0
请大师帮我修改下,谢谢
defget_numbersw(lng, gap):
gap_list = []
if lng <= gap:
gap_list = list(lng)
else:
gap_z = lng // gap
gap_y = lng % gap #取余,准备把多余的加到索引值里面去
index = 0
gap_list = 0
while gap_list[-1] <= lng:
index += 1
if gap_y > 0: #每次把它取1,直到把余用尽
gap_y_z = 1
gap_y = gap_y - 1
gap_list.append(gap_z*index+gap_y_z)
#gap_list.append(lng - 1)# 加入最后一个数
return gap_list
lng = 94
gap = 31
gap_list = get_numbersw(lng, gap)
print(gap_list) 本帖最后由 futui 于 2023-4-16 15:53 编辑
能运行了,但不知道什么原因,反正要多几个数,不是31(gap)个数,请大师看看,谢谢
defget_numbersw(lng, gap):
gap_list = []
if lng <= gap:
gap_list = list(lng)
else:
gap_z = lng // gap
gap_y = lng % gap
index = 0
gap_list.append(0)
while gap_list[-1] < lng:
index += 1
if gap_y != 0:
gap_y_z = 1
gap_y = gap_y - 1
gap_list.append(gap_z*index+gap_y_z)
print(index)
#gap_list.append(lng - 1)# 加入最后一个数
return gap_list
lng = 94
gap = 31
gap_list = get_numbersw(lng, gap)
print(gap_list)
页:
[1]