Python第五天

一、杂项

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编码

你可能感兴趣的:(Python第五天)