Python list 常见操作

  1. 将列表分成均匀大小的块
    1. 方法一
    2. 方法二
  2. 将列表分成一共有 m 块(尽可能平均)
    1. 方法一
    2. 方法二
  3. 判断一个集合是否为另一个集合的子集

将列表分成均匀大小的块

https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks

方法一

import pprint

def chunks(li, n):
    """Yield successive n-sized chunks from li."""
    for i in range(0, len(li), n):
        yield li[i:i + n]

pprint.pprint(list(chunks(list(range(10, 75)), 10)))

'''
[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74]]
'''

也可以使用列表生成器

[li[i:i + n] for i in range(0, len(li), n)]

方法二

# from itertools import izip_longest as zip_longest # for Python 2.x
from itertools import zip_longest # for Python 3.x
#from six.moves import zip_longest # for both (uses the six compat library)

def grouper(n, iterable, padvalue=None):
    return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue)

for i in (grouper(3, 'abcdefg')):
    print(i)

'''
('a', 'b', 'c')
('d', 'e', 'f')
('g', None, None)
'''

将列表分成一共有 m 块(尽可能平均)

方法一

https://www.coder4.com/archives/2089

import math

def chunks(arr, m):
    n = int(math.ceil(len(arr) / float(m)))
    return [arr[i:i + n] for i in range(0, len(arr), n)]

pprint.pprint(chunks(list(range(50)), 4))

'''
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
 [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25],
 [26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38],
 [39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]]
'''

方法二

https://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks/16935535#16935535

import numpy
lst = range(50)
for i in (numpy.array_split(lst, 4)):
    print(list(i))

'''
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
[13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
[26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37]
[38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
'''

判断一个集合是否为另一个集合的子集

setissubset() 方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。

或者,setissuperset() 方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 True,否则返回 False。

a = [1,2,3,4]
b = set([1,2])
b.issubset(a)  # True

set(a).issuperset(b)  # True

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com

文章标题:Python list 常见操作

文章字数:571

本文作者:Bin

发布时间:2018-09-19, 16:06:22

最后更新:2019-08-06, 00:07:35

原始链接:http://coolview.github.io/2018/09/19/Python/Python%20list%20%E5%B8%B8%E8%A7%81%E6%93%8D%E4%BD%9C/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录