sorted()
函数对所有可迭代的对象进行排序操作。
range(65, 91)
是大写字母A-Z;range(97, 123)
是小写字母a-z;range(48, 58)
是数字0-9;32
是空格;
string.isxxxx()
里面有很多,可以自己看一下。list.sort()
就行。一个列表中,先for
后if
。
ls =[x for x in a if x % 2 == 0]
排列组合是非常常见的两种数学方法,两个函数的语法是
permutations(iterable, r)
:从len(iterable)
中选取r
进行排列。combinations(iterable, r)
:从len(iterable)
中选取r
进行组合。from itertools import permutations, combinations
list(permutations(range(3)))
Out[2]: [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]
list(combinations(range(4), 2))
Out[3]: [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
注意iterable
是迭代器,千万要list
下转化为列表。
刷题时经常会遇到十进制转化为二进制,然后补充至8位长度的字节,这里推荐两种方式,都是字符串的形式。
bin(integer)
转化为二进制字符串(注意,同时前两位是0b
需要去除)。然后再用 str.rjust(width, symbol)
,用symbol在字符串左边填充至宽度width,举例a = 15
bin_a = bin(a)
bin_a
Out[4]: '0b1111'
bin_a[2:].rjust(8, '0')
Out[5]: '00001111'
"{:08b}".format(int(integer))
,这里直接对用字符串中的占位符中的b
来表示表示二进制,并用0
来补充至8位长度。这里需要注意的几个点:
0
在8
前面,所以补在前面,也可以写成{:0>8b}
这是0补在前面,如果是{:0<8b}
就是补在后面。format(int(integer))
可以简写成format(integer)
效果一样。利用^
排除两个集合的重叠元素(可以得到得到两个列表的对称差)。
list_1 = [1, 2, 1, 4, 6]
list_2 = [7, 8, 2, 1]
list(set(list_1) ^ set(list_2))
out[6]: [4, 6, 7, 8]
有时候会遇到要对同一个数组不断地迭代操作,例如
arr = [1, 2, 3]
for n in range(2):
for i in arr:
print(i)
arr.append(i + 4)
上述的情况会一直循环下去,对于这样的问题,最简单的方式就是for i in list(arr):
将每一次的arr都重新看作一个数组来操作。