简书每天就让发一篇 太烦了 那我还是直接都写到一篇里吧
{ }.format()格式方法的一个指示器
例如:'{0:b}'.format(int(a,2)+int(b,2))
这个的意思就是 按照 2进制 a + 2进制b的格式 输出
: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
str.format() 格式化数字的多种方法:

Python divmod() 函数
python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
在 python 2.3 版本之前不允许处理复数。
函数语法
divmod(a, b)
参数说明:
a: 数字
b: 数字
实例
>>>divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
^ -------异或xor
想复杂了
^就是数学里的 那个判断的异或符号
但是python里是按2进制算的
就是说
0^0
0^1
1^0
1^1
的输出分别是:
>>>
0
1
1
0
10进制的就按照转换为2进制 再转换为10进制来算
就是比如 5^3 = 6
因为:
5 = 0101(b)
3 = 0011(b)
二进制之后就是: 01100
再换回10进制就是 6
deque是双边队列,具有队列和栈的性质。相当于可以在两端操作的list。
以下是deque的常用方法:
import collections
d = collections.deque([])
d.append('a')# 在最右边添加一个元素
d.appendleft('b')# 在最左边添加一个元素
d.extend(['c','d'])# 在最右边添加所有元素
d.extendleft(['e','f'])# 在最左边添加所有元素
d.pop()# 将最右边的元素取出
d.popleft()# 将最左边的元素取出
d.rotate(-2)# 向左旋转两个位置(正数则向右旋转)
d.count('a')# 队列中'a'的个数
d.remove('c')# 从队列中将'c'删除
d.reverse()# 将队列倒序
f=d.copy()# 复制队列
数组初始化 = [None for _in range(rowNum)]
Python zip() 函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式[(1, 2, 3), (4, 5, 6)]
res = [a + b for a, b in zip([0] + res, res + [0])]
这句琢磨了半天
感觉应该跟三元表达式一样是个倒装句
三元表达式
熟悉 C/C++ 的程序员,初上手 python 时,一定会怀念经典的三元操作符,因为想表达同样的思想,用python 写起来似乎更麻烦。比如:
>>> y = 5
>>> if y < 0:
print('y是一个负数')
else:
print('y是一个非负数')
y是一个非负数
其实,python 是支持三元表达式的,只是稍微怪异了一点,类似于我们山东人讲话。比如,山东人最喜欢用倒装句:打球去吧,要是不下雨的话;下雨,咱就去自习室。翻译成三元表达式就是:
打球去吧 if 不下雨 else 去自习室
来看看三元表达式具体的使用:
>>> y = 5
>>> print('y是一个负数' if y < 0 else 'y是一个非负数')
y是一个非负数
python 的三元表达式也可以用来赋值:
>>> y = 5
>>> x = -1 if y < 0 else 1
>>> x
1
但是其实应该是个省略句。。。
列表推导式
在各种稀奇古怪的语法中,列表推导式的使用频率应该时最高的,对于代码的简化效果也非常明显。比如,求列表各元素的平方,通常应该这样写(当然也有其他写法,比如使用map函数):
>>> a = [1, 2, 3, 4, 5]
>>> result = list()
>>> for i in a:
result.append(i*i)
>>> result
[1, 4, 9, 16, 25]
如果使用列表推导式,看起来就舒服多了:
>>> a = [1, 2, 3, 4, 5]
>>> result = [i*i for i in a]
>>> result
[1, 4, 9, 16, 25]
列表索引的各种骚操作
Python 引入负整数作为数组的索引,这绝对是喜大普奔之举。想想看,在C/C++中,想要数组最后一个元素,得先取得数组长度,减一之后做索引,严重影响了思维的连贯性。Python语言之所以获得成功,我个人觉得,在诸多因素里面,列表操作的便捷性是不容忽视的一点。请看:
>>> a = [0, 1, 2, 3, 4, 5]
>>> a[2:4]
[2, 3]
>>> a[3:]
[3, 4, 5]
>>> a[1:]
[1, 2, 3, 4, 5]
>>> a[:]
[0, 1, 2, 3, 4, 5]
>>> a[::2]
[0, 2, 4]
>>> a[1::2]
[1, 3, 5]
>>> a[-1]
5
>>> a[-2]
4
>>> a[1:-1]
[1, 2, 3, 4]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]
如果说,这些你都很熟悉,也经常用,那么接下来这个用法,你一定会感觉很神奇:
>>> a = [0, 1, 2, 3, 4, 5]
>>> b = ['a', 'b']
>>> a[2:2] = b
>>> a
[0, 1, 'a', 'b', 2, 3, 4, 5]
>>> a[3:6] = b
>>> a
[0, 1, 'a', 'a', 'b', 4, 5]
sgood = "".join(ch.lower() for ch in s if ch.isalnum())
ch.isalnum()是判断这个ch是否是数字或字符
1、python自带punctuation包,可以消除所有中文标点符号。
import re,string
from zhon.hanzi import punctuation
text = " Hello, world! 这,是:我;第!一个程序\?()()<>《》 "
print(re.sub(r"[%s]+" %punctuation, "",text))
Python itertools模块combinations方法
itertools模块combinations(iterable, r)方法可以创建一个迭代器,返回iterable中所有长度为r的子序列,返回的子序列中的项按输入iterable中的顺序排序。
例1:
from itertools import combinations
li = [1,2,3,4]
newIter = combinations(li,2)
print(newIter)
newList = list(newIter)
print(newList)
<itertools.combinations object at 0x7fd660b027c0>
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
例2、实现一位数组的所有排列组合:
li = [1,2,3,4]
li2 = []
for i in range(1,len(li)+1):
newLi = list(combinations(li,i))
li2.append(newLi)
print(li2)
[[(1,), (2,), (3,), (4,)], [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)], [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)], [(1, 2, 3, 4)]]
例3:利用chain.from_iterable方法将多个迭代器连接起来
from itertools import combinations,chain
li = [1,2,3,4]
print(list(chain.from_iterable(combinations(li,r)forrinrange(len(li)+1))))
[(), (1,), (2,), (3,), (4,), (1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4), (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4), (1, 2, 3, 4)]
网友评论