Python,列表列表,其中按4位数字对数字进行排序

时间:2018-07-20 13:53:26

标签: python python-3.x

我有一个包含数字的列表,我想创建一个新列表,其中包含具有相同的前4位数字的所有数字的单独列表。

例如:从l1中获得l2

l1 = [100023,100069,222236,22258,41415258,41413265,1214568...]

l2 = [[100023,100069],[222236,22258],[41415258,41413265],[1214568]...]

如何从l1创建l2?

我尝试遍历l1的元素,但没有成功!

def main():

    l1=[100023,100069,222236,22258,41415258,41413265,1214568]
    l2=[[100023,100069],[222236,22258],[41415258,41413265],[1214568]]
    x=0
    n=1
    for i in l2:
        if i[0:4] == l2[n][0:4]:
            l2[x].append(i)
        else:
            l2[x+1].append(i)
    print(l2)

if __name__ == '__main__':
    main()

仍然不知道如何进行。

2 个答案:

答案 0 :(得分:2)

您可以创建一个字典作为中间结果,然后将该字典转换回列表。 您还需要先将整数转换为字符串。

(async () => {
    console.log(await asyncFunction());
})();

答案 1 :(得分:1)

在将列表元素转换为字符串并将第一个数字用作键之后,可以使用itertools.groupby

from django_tenants.utils import schema_context

def do_something(context):
    print("do_something")

def my_callable():
    tenant = "db_tenant"    
    with schema_context(tenant):
        context = {"a": 1, "b": 2}
        do_something(context)

my_callable()

编辑:Frieder's solution几乎是在幕后实现的方式。