Snippets
参考:https://medium.com/better-programming/20-python-snippets-you-should-learn-today-8328e26ff124
序列定长分割
In [16]: from six.moves import zip_longest
In [17]: for i in zip_longest(*[iter([1,2,3,4,5])]*2, fillvalue=0):
...: print(i)
...:
(1, 2)
(3, 4)
(5, 0)
In [18]: for i in zip_longest(*[iter('abcdefg')]*2, fillvalue='*'):
...: print(i)
...:
('a', 'b')
('c', 'd')
('e', 'f')
('g', '*')
字符串逆转
In [1]: my_string = "ABCDE"
In [2]: my_string[::-1]
Out[2]: 'EDCBA'
标题类(首字母大写)
In [3]: my_string = "aaa bbb ccc ddd"
In [4]: my_string.title()
Out[4]: 'Aaa Bbb Ccc Ddd'
n次序列
In [6]: my_string = "abcd"
In [7]: my_string*3
Out[7]: 'abcdabcdabcd'
In [8]: my_list = [1,2,3,4]
In [9]: my_list*3
Out[9]: [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
列表解析
In [8]: my_list=[1,2,3,4,5]
In [9]: [x for x in my_list if x%2!=0]
Out[9]: [1, 3, 5]
In [10]: my_list = [1,2,3,4]
In [11]: new_list = [2*x for x in my_list]
In [12]: new_list
Out[12]: [2, 4, 6, 8]
交换值
In [15]: a,b=1,2
In [16]: a,b = b,a
In [17]: a
Out[17]: 2
连接字符串
In [18]: list_of_strings = ['My', 'name', 'is', 'Chaitanya', 'Baweja']
In [19]: ','.join(list_of_strings)
Out[19]: 'My,name,is,Chaitanya,Baweja'
列表计数
In [23]: from collections import Counter
In [24]: my_list = ['a','a','b','b','b','c','d','d','d','d','d']
In [25]: count=Counter(my_list)
In [26]: count
Out[26]: Counter({'a': 2, 'b': 3, 'c': 1, 'd': 5})
In [27]: count.most_common(1)
Out[27]: [('d', 5)]
合并字典
In [28]: dict_1 = {'apple': 9, 'banana': 6}
In [29]: dict_2 = {'banana': 4, 'orange': 8}
In [30]: combined_dict = {**dict_1, **dict_2}
In [31]: combined_dict
Out[31]: {'apple': 9, 'banana': 4, 'orange': 8}
列表扁平化
In [1]: from iteration_utilities import deepflatten
In [2]: l = [[1,2,3],[4,[5],[6,7]],[8,[9,[10]]]]
In [3]: print(list(deepflatten(l, depth=3)))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
列表采样
In [4]: import random
In [5]: my_list = ['a', 'b', 'c', 'd', 'e']
In [6]: num_samples = 2
In [7]: random.sample(my_list,num_samples)
Out[7]: ['c', 'a']
对象内存
In [5]: import sys
In [6]: a=10
In [7]: sys.getsizeof(a)
Out[7]: 28
Questions
Set
- add() 方法
把要传入的元素做为一个整个添加到集合中
- update() 方法
把要传入的元素拆分,做为个体传入到集合中
- remove() 方法
集合运算
注:集合不支持索引访问
操作符号列表
含义 | python |
---|---|
差集 | -/difference() |
交集 | &/intersection |
并集 | |/union |
不等于 | != |
等于 | == |
属于 | in |
不属于 | not in |
init.py 作用
__init__.py
该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。
二维list赋值问题
参考: (https://blog.csdn.net/zzc15806/article/details/82629406)(https://blog.csdn.net/zzc15806/article/details/82629406)
问题:以 arr = [[0]*N]*N
形式初始化时,对二维数组对某个元素赋值时会发现整列都会被赋值
原因:因为 [[0]*N]*N
表示的是N个指向 [0]*N
这个列表的引用,所以当你修改某一个值时,整个列表都会被改变。
解决:以arr=[[0]*N for _ in range(N)]
赋值。