python list comprehension double for

后端 未结 4 1139
终归单人心
终归单人心 2020-12-02 05:35
vec = [[1,2,3], [4,5,6], [7,8,9]]
print [num for elem in vec for num in elem]      <----- this

>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

This is

4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-02 06:38

    You can look at list comprehension just as sequential statements. This applies for any levels of for and if statements.

    For example, consider double for loop with their own ifs:

    vec = [[1,2,3], [4,5,6], [7,8,9]]
    result = [i for e in vec if len(e)==3 for i in e if i%2==0]
    

    Here the list comprehension is same as:

    result = []
    for e in vec: 
        if len(e)==3:
            for i in e:
                if i%2==0:
                    result.append(i)
    

    As you can see list comprehension is simply for and if without indentations but in same sequence.

提交回复
热议问题