python

python {'0:b'}.format() divmod

2020-08-14  本文已影响0人  铁汁红豆

简书每天就让发一篇 太烦了  那我还是直接都写到一篇里吧

{ }.format()格式方法的一个指示器

例如:'{0:b}'.format(int(a,2)+int(b,2))

这个的意思就是 按照 2进制 a + 2进制b的格式 输出

 : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

str.format() 格式化数字的多种方法:

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。+ 表示在正数前显示 +,负数前显示 -;  (空格)表示在正数前加空格b、d、o、x 分别是二进制、十进制、八进制、十六进制。

Python divmod() 函数

 Python 内置函数

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)]

上一篇 下一篇

猜你喜欢

热点阅读