去重
使用set的特性
orglist = [1,2,3,3,4,5]formatlist = list(set(orglist))print(formatlist)>>[1, 2, 3, 4, 5]
使用keys()方法
orgList = [1,0,3,7,7,5]#list()方法是把字符串str或元组转成数组formatList = list({}.fromkeys(orgList).keys())print(formatList)>>[0, 1, 3, 5, 7]
安装索引再次排序
orgList = [1,0,3,7,7,5]formatList = list(set(orgList))formatList.sort(key=orgList.index)print(formatList)>>[1, 0, 3, 7, 5]
排序和反转
排序
sorted(iterable, cmp=None, key=None, reverse=False)
反转
a = [1,2,3,4,6]a = a[::-1] #切片a = list(reversed(a)) #利用reversed函数>>[6, 4, 3, 2, 1]
删除
列表的删除有3种方法
根据下标删除元素:
numbers1 = [6,7,8,9,10,11]numbers1.pop(1)print(numbers1)>>[6, 8, 9, 10, 11]numbers = [6,7,8,9,10,11]del numbers[0]>>[7, 8, 9, 10, 11]
直接删除对应的值:
x = [1,2,3,4,5]x.remove(1)print(x)>>[2,3,4,5]
切片删除:
str1 = ["a","b","c"]str1[1:2] = []print(str1)>>['a', 'c']
循环删除
循环一个list的时候,每次循环Index索引+1。如果这个时候动态的改变列表比如第一次循环 索引Index = 0, 下一次循环就是 Index = 1如果这个时候列表list动态的改变了,例如Index=1的元素前进的一位,变为Index = 0位置了,这个时候就会漏掉,循环索引会找Index=1的,但是你的Index变为0了,就漏掉了。
alist = [2,2,3]for i in alist:if i == 2:alist.remove(i)print(alist)>>[2, 3]
解决:采用倒叙,或者拷贝一个新列表循环
alist = [2,2,3]for i in alist[:]:if i == 2:alist.remove(i)print(alist)>>[3]alist = [2,2,3]for i in alist[::-1]:if i == 2:alist.remove(i)print(alist)>>[3]
交集和并集
合并
x1 = {1,2,3}x2 = {3,4,5}print('x1和x2合并',x1 | x2)print('x1和x2合并',x1.union(x2))>>x1和x2合并 {1,2,3,4,5}
相交
x1 = {1,2,3}x2 = {3,4,5}print('x1和x2相交',x1 & x2)print('x1和x2相交',x1.intersection(x2))>>x1和x2相交 {3}
差集
x1 = {1,2,3}x2 = {3,4,5}print(x1.difference(x2))>>{1,2}
抛出公有元素,返回集合合并的子集
x1 = {1,2,3}x2 = {3,4,5}print(x1 ^ x2)>>{1,2,4,5}
和*
单星(*)
- 在函数定义中使用,收集参数。将参数捕捉到一个元组中
```python
def func1(param1,*param2): #param2是可变参数
print(‘param1:’,param1)
print(‘param2:’,param2,type(param2))
func1(1,2,3,4,5)
param1: 1 param2: (2, 3, 4, 5)
2. 向函数传递参数,将变量中可迭代对象的元素拆解出来,作为独立的参数第传给函数```pythonstr_list = ["flower","flight","flight"]for str in zip(*str_list): #将str_list中的每个元素转化为元组print(str)>>>>('f', 'f', 'f')('l', 'l', 'l')('o', 'i', 'i')('w', 'g', 'g')('e', 'h', 'h')('r', 't', 't')a = [1,2,3,4,5,6]print(*a)>>1 2 3 4 5 6
letcode题目:最长公共前缀
双星(**)
以字典的形式导入
def func2(param1,**param2):print('param1:',param1)print('param2:',param2,type(param2))func2(1,a=2,b=3,c=4,d=5)>>param1: 1>>param2: {'a': 2, 'b': 3, 'c': 4, 'd': 5} <class 'dict'>
合并列表
a = [1,2,3]b = [4,5,6]x =[a,b]print(x)x = [*a,*b]print(x)>>[[1, 2, 3], [4, 5, 6]]>>[1, 2, 3, 4, 5, 6]
合并字典
a = {'A':1,'B':2}b = {'C':3,'D':4}c = {**a,**b}print(c)>>{'A': 1, 'B': 2, 'C': 3, 'D': 4}c = {}c.update(a)c.update(b)>>{'A': 1, 'B': 2, 'C': 3, 'D': 4}
列表合并成字典
a = ['a','b']b = [1,2]c = dict(zip(a,b))print(c)>>{'a':1,'b':2}
字典的排序
字典在python3.6x后就已经是有序字典了
相对字典进行排序可以使用lamba表达式结合sorted来完成
key_value = {}key_value = {1:56,7:32,5:23,3:78,2:78}print(sorted(key_value.items(), key = lambda kv:(kv[1], kv[0]),reverse=True))>>[(3, 78), (2, 78), (1, 56), (7, 32), (5, 23)]
字典删除
pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
