zoukankan      html  css  js  c++  java
  • python 常用技巧 — 列表(list)

    目录:

    1. 嵌套列表对应位置元素相加 (add the corresponding elements of nested list)

    2. 多个列表对应位置相加(add the corresponding elements of several lists) 

    3. 列表中嵌套元组对应位置相加 (python sum corresponding position in list neseted tuple)

    4. 判断列表中所有元素是否都是0 (python check if all element in list is zero)

    5. 寻找列表中所有最大值的位置 (python find all position of maximum value in list) 

    6. 计算列表中出现次数最多的所有项 (python get all value with the highest occurrence in list)

    7. 生成等间隔列表 (python create list in same space)

    8. 寻找嵌套列表的最大值 (python find max value in nested list)

    9. 找到列表中的众数 (python find mode in list)

    10. 列表按照某个规则排序 (python sort a list according to an regulation)

    11. 列表里面元素所有是否满足某一个条件 (python check if all element of a list matches a condition)

    12. 对两个列表一起进行排序 (python sort two list in same order)

    13.  把嵌套的列表平铺成一个列表 (python convert nested list to a flat list)

    内容:

    1. 嵌套列表对应位置元素相加 (add the corresponding elements of nested list)

    https://stackoverflow.com/questions/11280536/how-can-i-add-the-corresponding-elements-of-several-lists-of-numbers

    方法1:

    >>> lis=[[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7]]
    >>> [sum(x) for x in zip(*lis)]
    [6, 9, 12, 15, 18] 

    方法2:

    >>> seq = np.array([
    ... [1,2,3,4,5],
    ... [2,3,4,5,6],
    ... [3,4,5,6,7]])
    >>> np.sum(seq,axis=0)
    array([ 6,  9, 12, 15, 18])

     

    2. 多个列表对应位置相加(add the corresponding elements of several lists)  

    https://stackoverflow.com/questions/11280536/how-can-i-add-the-corresponding-elements-of-several-lists-of-numbers

    方法1: 

    a = [1,2,3,4,5]
    b = [2,3,4,5,6]
    c = [3,4,5,6,7]
    [sum(n) for n in zip(*[a, b, c])]

    方法2:

    >>> seq = np.array([
    ... [1,2,3,4,5],
    ... [2,3,4,5,6],
    ... [3,4,5,6,7]])
    >>> np.sum(seq,axis=0)
    array([ 6,  9, 12, 15, 18])

     

    3. 列表中嵌套元组对应位置相加 (python sum corresponding position in list neseted tuple)

    https://stackoverflow.com/questions/14180866/sum-each-value-in-a-list-of-tuples

    方法1:

    l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 0)]
    [sum(x) for x in zip(*l)]
    [25, 20]

    方法2:

    map(sum, zip(*l))
    [25, 20]
    

     

    4. 判断列表中所有元素是否都是0 (python check if all element in list is zero)

    https://stackoverflow.com/questions/10666163/how-to-check-if-all-elements-of-a-list-matches-a-condition

    In [62]: b=[0, 0, 0, 0, 0, 0, 0, 0, 0]
    In [63]: all(i==0 for i in b)
    Out[63]: True
    

     

    5. 寻找列表中所有最大值的位置 (python find all position of maximum value in list)

    https://stackoverflow.com/questions/3989016/how-to-find-all-positions-of-the-maximum-value-in-a-list

    方法1:

    a = [32, 37, 28, 30, 37, 25, 27, 24, 35, 55, 23, 31, 55, 21, 40, 18, 50, 35, 41, 49, 37, 19, 40, 41, 31]
    >>> m = max(a)
    >>> [i for i, j in enumerate(a) if j == m]
    [9, 12]

    方法2:

    m = max(a)
    [i for i in range(len(a)) if a[i] == m]
    

     

    6. 计算列表中出现次数最多的所有项 (python get all value with the highest occurrence in list) 

    https://stackoverflow.com/questions/36516279/how-to-return-elements-with-the-highest-occurrence-in-list

     

    In [10]: from collections import Counter
    In [11]: a=[2, 3, 5, 1, 6, 1, 5]
    In [12]: ct = Counter(a)
    In [13]: ct
    Out[13]: Counter({1: 2, 2: 1, 3: 1, 5: 2, 6: 1})
    In [14]: max_value = max(ct.values())
    In [15]: max_value
    Out[15]: 2
    In [16]: sorted(key for key, value in ct.items() if value == max_value)
    Out[16]: [1, 5]
    

     

    7. 生成等间隔列表 (python create list in same space)

    https://stackoverflow.com/questions/6683690/making-a-list-of-evenly-spaced-numbers-in-a-certain-range-in-python

    方法1:

    In [3]: [3+x*5 for x in range(10)]
    Out[3]: [3, 8, 13, 18, 23, 28, 33, 38, 43, 48]

    方法2:

    In [46]: import numpy as np
    In [47]: np.linspace(0,5,10)
    Out[47]: 
    array([ 0.        ,  0.55555556,  1.11111111,  1.66666667,  2.22222222,
            2.77777778,  3.33333333,  3.88888889,  4.44444444,  5.        ])

    方法3:

     

    >>> a = np.arange(0,5, 0.5) # returns a numpy array
    >>> a
    array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5,  3. ,  3.5,  4. ,  4.5]

     

     8. 寻找嵌套列表的最大值 (python find max value in nested list)

    https://stackoverflow.com/questions/33286642/finding-the-largest-number-in-a-nested-list-in-python

     

    In [4]: lists = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]]
    
    In [5]: list(map(max, lists))
    Out[5]: [345, 555, 777, 666]
    
    In [6]: max(map(max, lists))
    Out[6]: 777
    

     

    9. 找到列表中的众数 (python find mode in list)

     https://stackoverflow.com/questions/10797819/finding-the-mode-of-a-list

    In [1]: from statistics import mode
    
    In [2]: list = [2,3,4,5,64,3,2,3,3,3]
    
    In [3]: mode(list)
    Out[3]: 3
    

     

    10. 列表按照某个规则排序 (python sort a list according to an regulation)

    https://www.geeksforgeeks.org/python-sort-list-according-second-element-sublist/

    注意:区分sort和sorted,是否是原地修改列表(in place)

     

    In [58]: a=[('rishav', 10), ('akash', 5), ('ram', 20), ('gaurav', 15)]
    
    In [59]: b=sorted(a, key = lambda x: x[1], reverse=True)
    
    In [60]: a
    Out[60]: [('rishav', 10), ('akash', 5), ('ram', 20), ('gaurav', 15)]
    
    In [61]: b
    Out[61]: [('ram', 20), ('gaurav', 15), ('rishav', 10), ('akash', 5)]
    
    In [62]: a.sort(key = lambda x: x[1], reverse=True)
    
    In [63]: a
    Out[63]: [('ram', 20), ('gaurav', 15), ('rishav', 10), ('akash', 5)]
    

     

    11. 列表里面元素所有是否满足某一个条件 (python check if all element of a list matches a condition)

    https://stackoverflow.com/questions/10666163/how-to-check-if-all-elements-of-a-list-matches-a-condition

    >>> items = [[1, 2, 0], [1, 2, 0], [1, 2, 0]]
    >>> all(item[2] == 0 for item in items)
    True
    >>> items = [[1, 2, 0], [1, 2, 1], [1, 2, 0]]
    >>> all(item[2] == 0 for item in items)
    False
    如果想判断至少存在一个这样的元素,则使用下面语句
    >>> any(item[2] == 0 for item in items)
    True
    

     

    12. 对两个列表一起进行排序 (python sort two list in same order)

    https://stackoverflow.com/questions/9764298/is-it-possible-to-sort-two-listswhich-reference-each-other-in-the-exact-same-w

    In [197]: a
    Out[197]: [(38, 750, 574, 788), (39, 301, 575, 559), (39, 182, 254, 281)]
    
    In [198]: b
    Out[198]: [(291, 778), (306, 429), (151, 230)]
    
    In [199]: c, d =zip(*sorted(zip(a, b)))
    
    In [200]: c
    Out[200]: ((38, 750, 574, 788), (39, 182, 254, 281), (39, 301, 575, 559))
    
    In [201]: d
    Out[201]: ((291, 778), (151, 230), (306, 429))
    

    13.  把嵌套的列表平铺成一个列表 (python convert nested list to a flat list)

    https://djangocentral.com/nested-list-to-flat-list/

    In [223]: a=[[(86, 68, 414, 99), (309, 132, 435, 144), (94, 185, 410, 230)], [], [], [(1, 2, 3, 4)], []]
    // 方法1
    In [224]: import functools
         ...: import operator
         ...: 
    
    In [225]: functools.reduce(operator.concat, a)
    Out[225]: [(86, 68, 414, 99), (309, 132, 435, 144), (94, 185, 410, 230), (1, 2, 3, 4)]
    // 方法2
    In [226]: from functools import reduce
    
    In [227]:  reduce(lambda x, y: x+y, a)
    Out[227]: [(86, 68, 414, 99), (309, 132, 435, 144), (94, 185, 410, 230), (1, 2, 3, 4)]
    // 方法3
    In [228]: from itertools import chain
    
    In [229]: list(chain.from_iterable(a))
    Out[229]: [(86, 68, 414, 99), (309, 132, 435, 144), (94, 185, 410, 230), (1, 2, 3, 4)]
    

     

  • 相关阅读:
    2014年5月16日
    2014年4月8日
    Qt 小技巧之“To-Do 事项”
    koa中间件实现分析
    关于计算透视投影的四条边的方法,留作备忘
    关于向量
    关于ngui协同
    关于NGUI分辨率
    动态修改NGUI UI2DSprite
    动态设置viewport的宽高
  • 原文地址:https://www.cnblogs.com/ttweixiao-IT-program/p/11905318.html
Copyright © 2011-2022 走看看