Python:列表&元组&集合的操作

66 阅读4分钟

列表的操作

列表中可以存储任何类型

列表的索引:默认从0开始

L1 = ['张三','李四','wangw',78,9.0,True,[23,45,43]]

根据下标,找到相对应的元素→列表对象[下标]

L1 = ['张三','李四','wangw',78,9.0,True,[23,45,43]]
print(L1[2])
print(L1[-1])
print(L1[2:-2])
print(L1[5:-7:-1])

输出1:

image.png

特性:str不可变,但是list是可变的。

age_list=['12','13','14','15]

#增删改查

  1. append():添加一个元素
age_list=['12','13','14','15']
age_list.append(16)
print(age_list)

输出1:['12', '13', '14', '15', 16]

  1. extend():添加一个序列中的每一个元素
age_list=['12','13','14','15']
B = ['jh','54f',65]
age_list.extend(B)
print(age_list)

输出2:['12', '13', '14', '15', 'jh', '54f', 65]

  1. insert():在指定的下标处插入一个元素
age_list=['12','13','14','15']
age_list.insert(2,'hello')
print(age_list)

注意:insert(M,N)

M代表插入下标,N代表插入的元素

输出3:['12', '13', 'hello', '14', '15']

  1. clear():删除里面全部内容,但会返回一个[]
age_list=['12','13','14','15']
age_list.clear()
print(age_list)

输出4:[]

pop():根据下标删除元素

age_list=['12','13','14','15']
age_list.pop(2)
print(age_list)

输出5:['12', '13', '15']

remove():只移除匹配到的第一个元素

age_list=['12','13','14','15','13','14']
age_list.remove('13')
print(age_list)

输出6:['12', '14', '15', '13', '14']

del():删除一切对象

age_list=['12','13','14','15']
del age_list
print(age_list)

image.png

报出该错误的原因是,变量age_list已经被删除了

age_list=['12','13','14','15']
del age_list[-3]
print(age_list)

输出7:['12', '14', '15']

修改:先索引再修改

age_list=['12','13','14','15']
age_list[2] = 'hello'
print(age_list)

输出8:['12', '13', 'hello', '15']

注意:这里的先索引再修改跟之前的insert()函数不一样,insert()是在原有的元素上新添加元素,而修改是直接替换到某个元素。

逆置

age_list=['12','13','14','15']
age_list.reverse()
print(age_list)

输出9:['15', '14', '13', '12']

sort()排序:默认是从小到大

age_list=['12','13','14','15','12','13','14']
age_list.sort()    #age_list.sort(reverse=False)
print(age_list)

输出10:['12', '12', '13', '13', '14', '14', '15']

查看:index;次数:count;len:长度

index():根据元素找下标,元素出现次数为多次时,只要找到第一个元素就会退出

age_list=['12','13','14','HELLO','12','13','14']
print(age_list.index('HELLO'))

输出11:3

找不到就会报错

count():统计元素出现的次数

age_list=['12','13','14','HELLO','12','13','14']
print(age_list.count('14'))

输出12:2

找不到就会报0

**注意:**将列表转换成字符串的时候,会把引号、中括号等符号全部当成元素转入

age_list=['12','13','HELLO']
A = str(age_list)
print(len(A))

输出13:21,转成字符串时候,数字和数字之间还要算一个空格,只有数字和数字之间才有效

元组tuple

T = (23,34,'HELLO',4)

T = (23,34,'HELLO',4)
print(T.count(4))

输出1:1

T = (23,34,'HELLO',4)
print(T.index(4))

输出:3

元组的操作比较简单,用地最多的基本上就是以上的count()和index()

集合

集合是可变的,拥有自动去重且无序的功能,只可存储不可变的类型(数字在一定范围内会自动排序)

正是因为集合的特殊性,无序,所以集合是没有索引功能的

增加add()

S = {34,'hello',54,95.2}
S.add(8)
print(S)

输出1:{34, 'hello', 8, 54, 95.2}

update():添加序列中的每一个元素

S = {34,'hello',54,95.2}
S.update({'world',99})
print(S)

输出2:{34, 'world', 99, 'hello', 54, 95.2}

删除:pop()、remove()、discard()、clear()

S = {34,'hello',54,95.2}
S.discard(54)
print(S)

输出3:{95.2, 34, 'hello'}

S = {34,'hello',54,95.2}
S.remove(54)
print(S)

输出4:{34, 'hello', 95.2}

discard()和remove()的区别就是,remove()找不到会报错,discard()找不到是不会报错的。

S = {34,'hello',54,95.2}
S.pop()
print(S)

输出5:{34, 'hello', 95.2}

pop()函数不指定元素,而是随机删除一个

S = {34,'hello',54,95.2}
S.clear()
print(S)

clear()全部删除

S = {34,'hello',54,95.2}
S.clear()
print(S)

输出6:set()

clear()函数不指定元素

思考:如果有一列表:A = ['KJdv',34,'k6f',54,34,'765gfssF',34],怎么才能达到一个自动去重的效果?

A = ['KJdv',34,'k6f',54,34,'765gfssF',34]
for i in A:
    if A.count(i) > 1:
        A.remove(i)
print(A)

输出:['KJdv', 'k6f', 54, '765gfssF', 34]