一、杂项
1、random.shuffle(list)是一个原地函数
2、字典的items()、values()、keys()是可以迭代的 //别忘记加s
3、Python是基于值的内存管理模式
4、Python变量存放的不是值;而是值的引用
二、列表推导式
1、平铺嵌套列表,第一个循环是外循环,执行的慢,第二个循环是内循环
a=[[1,2,3],[4,5,6,7],[8,9]]
[num for elem in a for num in elem]
2、过滤不符合条件的元素:使用if语句
[i for i in a if i>4]
例子2
import os
[filename for filename in os.listdir('.') if filename.endswith(".py")]
3、字典的items()、values()、keys()是可以迭代的
z是一个字典
[key1 for key1,value1 in z.items() if b==max(z.values())]
在z中的选取值最大的其键名所组成的列表
4、
[index for index,value in z if 10
z是一个enumerate结构,返回的是其值在10-20之间的项目的索引
5、使用多个循环,实现多序列元素的任意组合,且过滤
[(x,y)for x in [1,2,3,4] for y in [6,7,8] if y%x!=0]
[(2, 7), (3, 7), (3, 8), (4, 6), (4, 7)]
6、矩阵的转置
>>> matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
>>> [ [row[i] for row in matrix ] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
7、复杂表达式,有if else
>>> c=[1,2,3,4,5,6,7,8,9,10]
>>> [2*k if k%2==0 else k+1 for k in c]
[2, 4, 4, 8, 6, 12, 8, 16, 10, 20]
8、列表求100以内素数:
[p for p in range(2,100) if 0 not in [p%j for j in range(2,int(sqrt(p))+1)]]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
三、列表切片:
1、
等式左边的切片若是连续的,那么等式两侧的列表长度可以不一样
若是不连续 的,那么左右两边列表长度要相等
2、
blist=alist //列表深拷贝 改变alist(blist)的值,另一个也会变
blist=alist[::] //列表浅拷贝
3、尽管两个列表值相等,他们的内存地址也不是同一个(短字符串支持内存驻留机制)
4、alist[开始:结束:步长]
5、alist[::2]=[0]*(len(alist)//2)
四、字符串:
1、Python 3使用的是Unicode编码格式
2、UTF-8是Unicode的一种表现形式
3、字符串不可以修改,replace()和translate()也是创建一个新的字符串
4、中文可以作为变量名
5、GB2312、GBK都是使用 两个字节表示中文,而UTF-8使用3个字节
6、str.encode()-->bytes
7、短字符串支持内存驻留机制,同一个短字符串赋值给不同对象,其对应的内存空间是一样的
8、转义字符
\ooo 3位八进制对应的字符
\xhh 2位十六进制对应的字符
\uhhhh 4位十六进制对应的Unicode字符
9、ord(char) 看unicode编码