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
    

  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10350465.html
Copyright © 2011-2022 走看看