zoukankan      html  css  js  c++  java
  • 如何在一个for语句中迭代多个对象(2.7)

    如何在一个for语句中迭代多个对象

    总结:

    并行迭代使用zip(l1, l2, l3)

    每次迭代从3个列表里各取一个数据

    串行迭代使用itertools.chain(l1, l2, l3)

    相当于把3个里边拼接成了一个列表再迭代

    并行迭代:使用zip 某班4个人各科成绩的迭代

    from random import randint
    l1 = ['jwang', 'Tom', 'Jerry', 'Liming']
    l2 = [randint(60, 100) for x in range(4)]
    l3 = [randint(60, 100) for x in range(4)]
    l4 = [randint(60, 100) for x in range(4)]
    
    print(l1)
    print(l2)
    print(l3)
    print(l4)
    
    for name, math, english, physics in zip(l1, l2, l3, l4):
        print("name:%s, math:%s, english:%s, physics:%s" % (name, math, english, physics))
    

    output:

    ['jwang', 'Tom', 'Jerry', 'Liming']
    [64, 69, 94, 93]
    [81, 89, 64, 80]
    [69, 94, 81, 62]
    name:jwang, math:64, english:81, physics:69
    name:Tom, math:69, english:89, physics:94
    name:Jerry, math:94, english:64, physics:81
    name:Liming, math:93, english:80, physics:62
    

    如果列表长度不一样也能迭代

    from random import randint
    l1 = ['jwang', 'Tom', 'Jerry', 'Liming']
    l2 = [randint(60, 100) for x in range(4)]
    l3 = [randint(60, 100) for x in range(4)]
    l4 = [randint(60, 100) for x in range(3)]
    
    print(l1)
    print(l2)
    print(l3)
    print(l4)
    
    for name, math, english, physics in zip(l1, l2, l3, l4):
        print("name:%s, math:%s, english:%s, physics:%s" % (name, math, english, physics))
    

    output:

    ['jwang', 'Tom', 'Jerry', 'Liming']
    [92, 66, 91, 75]
    [72, 92, 100, 77]
    [71, 67, 98]
    name:jwang, math:92, english:72, physics:71
    name:Tom, math:66, english:92, physics:67
    name:Jerry, math:91, english:100, physics:98
    

    串性迭代 使用chain

    for x in chain([1, 2, 3, 4],['a', 'b', 'c']):
        print(x)
    

    output:

    1
    2
    3
    4
    a
    b
    c
    

    4个班 每个班的英语成绩各存一个列表,统计全学年成绩高于90的人数

    from itertools import chain
    l1 = [randint(60, 100) for x in range(4)]
    l2 = [randint(60, 100) for x in range(4)]
    l3 = [randint(60, 100) for x in range(4)]
    l4 = [randint(60, 100) for x in range(3)]
    
    print(l1)
    print(l2)
    print(l3)
    print(l4)
    
    count = 0
    for x in chain(l1, l2, l3, l4):
        if x>90:
            count += 1
    print(count)
    

    output:

    [66, 94, 66, 73]
    [98, 90, 90, 60]
    [69, 83, 75, 61]
    [71, 83, 68]
    2
    

  • 相关阅读:
    1203 forms组件
    1128 聚合查询 orm字段及属性
    1127 模型层orm表操作
    1126 视图层与模板层
    1122 django中orm操作
    1121 Django操作
    1125 视图层
    搭建并行开发环境MPICH2
    Linpack之HPL测试 (HPL Benchmark)
    安装NetCDF及HDF5
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10350465.html
Copyright © 2011-2022 走看看