字符串
字符串拼接整数
直接用+是不行的,需要先将int转为str在转换才行
列表
初始化列表
1 | [0 for _ in range(k1*k2)] |
获取元素,没有返回默认值
1 | #按照Python的精神,“要求宽恕,而不是允许”,这是一种方法: |
解题实践—-罗马数字转整数
1 |
索引和切片
注意一点,负号是从右往左索引,最右边是-1
1 | # 索引从0开始,含左不含右 |
range()使用
生成一列数,但是类型是<class 'range'>,所以在使用的时候需要根据自己所需的类型转换一下,下面有几种用法:
1 | #转换类型 |
打乱列表元素
1 | import random |
列表的几种生成式
1 | #第一种 |
第四种需要注意:如果是字符串+int型的表达式,会报错,如下面这种
1
2
3
4
5
6heights = {'Yao':226, 'Sharq':216, 'AI':183}
x=[k+'='+ v for k,v in heights.items()]
print(x)
#TypeError: must be str, not int
#要先将int转为str类型
x=[k+'='+ str(v) for k,v in heights.items()]列表生成式生成二维列表
1
2
3[[_init_x(i, j) for j in range(0, dim_j)] for i in range(0, dim_i)]
#可以理解一下一维的[x**2 for x in range(5)]就是在前面的x**2循环5次生成五个数组成一维向量
#那同样可以扩展到二维,先看最外层,也就是要在前面生成一个列表,循环几次就生成几个列表,然后列表中的元素再利用列表生成式来生成
元组
元组类似列表,元组里面的元素也是进行索引计算。列表里面的元素的值可以修改,而元组里面的元素的值不能修改,只能读取。
集合
Python中集合主要有两个功能,一个功能是进行集合操作,另一个功能是消除重复元素。
把字符串拆分为单个字符
1 | a = set("abcnmaaaaggsng") |
set没有sort方法
AttributeError: ‘set’ object has no attribute ‘sort’
set方法只能传一个值哦
所以可以把列表或者元组转为集合,但不能直接在set方法里面赋多个值,比如下面是错误的:
1 | s=set('hello','world')#**TypeError**: set expected at most 1 arguments, got 2 |
字典
获取字典的keys和values
1 | print( k.keys()) |
字典的get和pop
1 | k.get('edu', -1) # 通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value |
用zip生成字典
1 | zl = zip(('A', 'B', 'C'), [1, 2, 3, 4]) # zip可以将列表、元组、集合、字典‘缝合’起来 |
字典的遍历方法
1 | #第一种 |
初始化字典
1 | #dict3=dict(zip([0 for _ in range(k1*k2)],[0.0 for _ in range(k1*k2)])) |
给字典排序
1 |
函数
高阶函数
把另一个函数作为参数传入一个函数,这样的函数称为高阶函数。函数本身也可以赋值给变量,函数与其它对象具有同等地位。
map函数
将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。这个map函数的参数列表有两个,第一个是自己传一个函数,第二个是列表类型。
自己传入的函数只有一个参数
1 | myList = [-1, 2, -3, 4, -5, 6, 7] |
reduce函数
reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,使用的时候要先导包
1 | from functools import reduce |
filter函数
把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。是True的话过滤掉,是False的话留下。但是要知道filter函数返回的是一个filter对象,如果要看到列表结果还需要自己转换类型。
1 | def is_odd(x): |
sorted函数
实现对序列排序,默认情况下对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1。可以自定义判断函数,然后传入sorted,传入函数包含两个参数,返回值是bool类型。**在c++中的算法库中sort也有类似用法。
默认排序:数字大小或字母序(针对字符串),但是要注意sorted是不会对原来的列表进行修改的,通过返回值生成一个新的排序后的列表,这点与c++不同
也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些
1 | sorted(myList) |
Python3中sorted 语法:
1 | sorted(iterable, key=None, reverse=False) |
参数说明:
- iterable — 可迭代对象。
- key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse — 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
1 | #比如一个列表中存放好几个元组,要求自定义对元组的排序,这下只能通过使用指定key来比较 |
当然也可以自定义函数来实现python2中的sorted方法,文末有链接
比如下面的:
1 | from functools import cmp_to_key |