python - 使用模式制作列表

标签 python list function

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

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/

相关文章:

javascript - 如何将小数简化为最小的分数?

python - 在 Django 中,如何让 django-storages、boto 和 easy_thumbnail 正常工作?

python - 将列表的列表转换为字典

python - 在 python 中为字符串和列表编写通用函数

java - 如何从具有子列表的列表中获取值并将所有值按顺序存储在另一个列表中

c++ - c++ 函数返回值的幕后花絮

c - 返回数组的安全性

Python 2.7 拆分和 .col 连接

python - 当 Nose 测试失败时 Jenkins 工作失败

python - Sublime Text 3 Python 交互式控制台?