gpt4 book ai didi

python - 使用模式制作列表

转载 作者:行者123 更新时间:2023-11-28 16:30:00 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,该函数将根据另一个列表的长度根据模式创建一个列表。由于模式的性质,我不确定如何执行此操作。我正在尝试制作类似的东西:

len(a_list) = 50

created_pattern_a_list = [1,2,4,8,10,20,40]

len(b_list) = 9000

created_patten_b_list = [1,2,4,8,10,20,40,80,100,200,400,800,1000,2000,4000,8000]

所以我想要的模式是 1,2,4,8,10,...。所以它是指数的,但直到它达到下一个 10 的幂,然后它以 10 的那个幂重新开始。我'我不确定如何制作可以执行此操作的函数。像这样的东西:

def create_patten_list(a_list):
reff_list = [1,2,4,8,10,20,40,80,100,200,400,800,1000,2000,4000,8000,10000]
corr_list = [a for a in reff_list if a <= len(a_list)]
return corr_list

但是 a_list 的长度可能比 10000 长很多,所以我不能像这样只使用一个固定长度的默认列表。有没有更好的方法来设置这样的模式?

最佳答案

我敢肯定这不是最优雅的解决方案,但请考虑一下:您模板的重复部分只有 1、2、4 和 8。其余只是数量级。

def get_pattern(length):
template = [1, 2, 4, 8]
output = []
i = 0
while True:
num = template[i%4] * 10**(i//4)
if num > length:
break
output += [num]
i += 1
return output

所以:

>>> get_pattern(5000)
[1, 2, 4, 8, 10, 20, 40, 80, 100, 200, 400, 800, 1000, 2000, 4000]

关于python - 使用模式制作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32960868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com