Python list 常见操作
将列表分成均匀大小的块
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 块(尽可能平均)
方法一
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]]
'''
方法二
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]
'''
判断一个集合是否为另一个集合的子集
set
的 issubset()
方法用于判断集合的所有元素是否都包含在指定集合中,如果是则返回 True,否则返回 False。
或者,set
的 issuperset()
方法用于判断指定集合的所有元素是否都包含在原始的集合中,如果是则返回 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" 转载请保留原文链接及作者。