去重
使用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. 向函数传递参数,将变量中可迭代对象的元素拆解出来,作为独立的参数第传给函数
```python
str_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值。