Python 列表与集合
列表排序方法
-
sort()
:按字母顺序排列 -
sort(reverse=True)
: 按字母顺序反向排列 -
reverse()
: 反转列表排列列表排序方法将直接改变原列表排列
L1.sort(), L1.sort(reverse=True), L1.reverse()
列表排序函数
-
sorted(list_obj)
-
sorted(list_obj, reverse=True)
-
reversed(list_obj)
可显示排列顺序或赋值给新列表,并不改变原列表排列顺序
sorted(L1), sorted(L1, reverse=True), reversed(L1)
列表赋值
变量的赋值操作为引用的赋值
a = [1, 2, 3, 4]
b = a # 将a的引用赋值b
print(a, id(a), b, id(b))
>>> [1, 2, 3, 4] 140492488 [1, 2, 3, 4] 140492488
列表切片在赋值号右边, 会产生原列表的拷贝,为浅拷贝,只进行第一层的复制
a = [1, 2, 3, 4]
b = a[2:]
print(a, id(a), b, id(b))
>>>[1, 2, 3, 4] 140416712 [3, 4] 140416904
x = ['a', 'b']
a = [1,x,3,4]
b = a[:]
b[1][0] = 'z'
print(a, id(a), b, id(b))
>>> [1, ['z', 'b'], 3, 4] 140417992 [1, ['z', 'b'], 3, 4] 140310856
列表切片在赋值号左边,且没有指定起止索引,则会将复制号右边的值替换左侧列表全部内容而不会产生新的列表
a = [1, 2, 3, 4]
a[:] = ['a','b','c']
print(a)
>>>['a', 'b', 'c']
集合的主要作用是去重、计算交集,并集,差集,反交集
my_list = [1,1,1]
my_list = list(set(my_list))
print('list转set后去重复: my_list = ', my_list)
my_set = {1,1,3}
print(my_list)
print(my_set,'\n')
>>>list转set后去重复: my_list = [1]
>>>[1]
>>>{1, 3}
set1 = {1,2,3,4}
set2 = {1,2,5,6}
#差集
print('差集, set1-set2,set2-set1')
print('set1-set2= ',set1-set2)
print('set2-set1= ',set2-set1, '\n' )
>>>差集, set1-set2,set2-set1
>>>set1-set2= {3, 4}
>>>set2-set1= {5, 6}
#并集
print('并集, set1 | set2')
print('set1 | set2= ', set1 | set2, '\n')
>>>并集, set1 | set2
>>>set1 | set2= {1, 2, 3, 4, 5, 6}
#交集
print('交集, set1 & set2')
print('set1 & set2= ', set1 & set2, '\n')
>>>交集, set1 & set2
>>>set1 & set2= {1, 2}
#反交集
print('反交集, set1 ^ set2 除了交集外的元素,相当于并集-交集')
print(set1 ^ set2)
>>>反交集, set1 ^ set2 除了交集外的元素,相当于并集-交集
>>>{3, 4, 5, 6}