Python技巧

实用技巧

迭代器排序函数 sorted

sorted() 函数对所有可迭代的对象进行排序操作。

  • 对于字符串可以直接用,会按照ASCII码排序。
    • range(65, 91)是大写字母A-Z;
    • range(97, 123)是小写字母a-z;
    • range(48, 58)是数字0-9;
    • 32是空格;
      • 字符串判断的话,更简单的就是string.isxxxx()里面有很多,可以自己看一下。
  • 对于列表,直接list.sort()就行。

for if 写在一行

一个列表中,先forif

ls =[x for x in a if x % 2 == 0]

排列与组合 permutations, combinations

排列组合是非常常见的两种数学方法,两个函数的语法是

  • 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下转化为列表。

字符串填充补零 rjust、format

刷题时经常会遇到十进制转化为二进制,然后补充至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位长度。这里需要注意的几个点:
    • 因为08前面,所以补在前面,也可以写成{: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]

对变长数组操作 list

有时候会遇到要对同一个数组不断地迭代操作,例如

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都重新看作一个数组来操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值