(MAX第七篇)Python列表(List)操作大全(二)


列表是一个有序的操作特别灵活的可变数据类型,可以进行删减、添加、复制、排序、迭代等多种操作,进行详细的分析。

1. 判断元素是否在列表中

使用 in 或者 not in 判断是否在列表中

>>> list1=[1,3,4,[2,3,4],'name','age']
>>> 1 in list1 #1是列表的成员
True
>>> 2 in list1 #2在第四个位置的列表中,但不是在list1中
False
>>> [2,3,4] in list1 #该列表在list1中
True
>>> 'age' in list1
True

2. 替换

>>> a=['a','b','c','d','e','f']
>>> a[1]='m' #把索引为1的'b'换成‘m'。
>>> a
['a', 'm', 'c', 'd', 'e', 'f']
>>> a[1],a[2]='g','h' #替换两个
>>> a
['a', 'g', 'h', 'd', 'e', 'f']

3. 复制

我们有时候会复制一下这个列表,可以采用下面的方法

3.1变量相等

  • 直接两个变量相等,这样的复制改变其中一个,另外一个也会改变
>>> names=['Max','Kiki','Melinda']
>>> namescopy=names #两个变量相等
>>> namescopy[1]='Hello Kitty' #把namescopy第二个元素更换
>>> namescopy #改变
['Max', 'Hello Kitty', 'Melinda']
>>> names #改变
['Max', 'Hello Kitty', 'Melinda']

3.2 切片复制

  • 切片式的复制,改变复制的列表不会改变原来的列表,如果只是部分切片,同样不会改变原来的列表。
>>> names=['Max','Kiki','Melinda']
>>> namescopy=names[:] #namescopy等于names的全部切片
>>> namescopy[1]='Hello Kitty' #改变namescopy的第二个元素
>>> namescopy #改变
['Max', 'Hello Kitty', 'Melinda']
>>> names #不改变
['Max', 'Kiki', 'Melinda']

3.3 list.copy()

  • 使用list.copy()来进行复制,改变复制的列表不会改变原来的列表
>>> names=['Max','Kiki','Melinda']
>>> namescopy=names.copy()  #使用list.copy()复制
>>> namescopy[1]='Hello Kitty'
>>> namescopy #改变
['Max', 'Hello Kitty', 'Melinda']
>>> names #不改变
['Max', 'Kiki', 'Melinda']

4. 增加

列表元素的增加有三种方法,分别是append(), insert(), extend()。

4.1 append

list.append()是在列表的最后添加元素,本方法经常会用在添加元素或者设立一个空列表,通过迭代添加所需要的所有元素。

>>> Names=['Max','Kiki']
>>> Names.append('Melinda')#添加一个新名字
>>> Names
['Max', 'Kiki', 'Melinda']
>>> List=[1,2,3,[1,2]]
>>> List.append('(L,O,V,E)') #添加一个字符串
>>> List
[1, 2, 3, [1, 2], '(L,O,V,E)']

4.2 insert

list.insert(index, obj)可以在列表的指定索引位置添加元素。当元素插入之后,当前及之后的元素的索引会统一逐次向后移动。

>>> list=[1,2,3,4,5,6]
>>> list[3]  #索引3的元素为4
4
>>> list.insert(3,'e') #在索引3的位置是插入'e'
>>> list[3] #返回插入的索引为3的元素
'e'
>>> list[4] #元素4的索引变成了4
4

4.3 extend

list.extend(obj),obj参数指的是list,是进行拓展。

>>> list1=[1,2,3]
>>> list2=['a','b','c']
>>> list1.extend(list2) #把list2元素连接在list1中
>>> list1
[1, 2, 3, 'a', 'b', 'c']

4.4 连接+

’ + ‘可以直接把两个或者多个列表连接到一起成为一个列表

>>> list1=[1,2,3]
>>> list2=['a','b','c']
>>> list3=['#','$','^']
>>> list1+list2+list3 #把三个列表连接为一个列表
[1, 2, 3, 'a', 'b', 'c', '#', '$', '^']

4.5 重复 *

‘ * ‘ 可以把字符串重复,同时可以把一个数列里的元素多次重复。

>>> name=['Max','Kiki']
>>> name*2  #重复两次
['Max', 'Kiki', 'Max', 'Kiki']
>>> name*3 #重复三次
['Max', 'Kiki', 'Max', 'Kiki', 'Max', 'Kiki']
>>> Apple1=['Mac']
>>> Apple2=['iphone','ipad']
>>> Apple3=['ipod']
>>> Apple1*2+Apple2+Apple3*2 # ‘+’ ‘*’同时使用
['Mac', 'Mac', 'iphone', 'ipad', 'ipod', 'ipod']

5. 删减

5.1 pop

list.pop()是删除列表最后一个元素并返回该元素。这个可以用于提取列表的最后一个元素,可以用在栈中比如后进先出。

 >>> Apple=['Latex','Office','iWork','Python','Typora','Mathtoolpix','itext']
>>> Apple.pop()  #删除并返回该元素
'itext'
>>>Apple  #已经没有里‘itext’。
['Latex','Office','iWork','Python','Typora','Mathtoolpix']
>>> Apple.pop()
'Mathtoolpix'
>>> Apple.pop()
'Typora'
>>> Apple.pop()
'Python'
>>> Apple.pop()
'iWork'
>>> Apple.pop()
'Office'
>>> Apple.pop()
'Latex'
>>> Apple.pop()   #列表通过pop(),已经删除全部元素,则会出现IndexError错误。
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    Apple.pop()
IndexError: pop from empty list

5.2 remove

list.remove(obj)用于移除列表中某个元素,如果该元素有多个,默认移除第一项

>>> App=['Latex','Office','Office','iWork','Python','Typora','Mathtoolpix','itext']
>>> App.remove('Typora') #移除'typora'
>>> App
['Latex', 'Office', 'Office', 'iWork', 'Python', 'Mathtoolpix', 'itext']
>>> App.remove('Office') #移除两个'Office'的第一个
>>> App
['Latex', 'Office', 'iWork', 'Python', 'Mathtoolpix', 'itext']

5.3 clear

list.clear()把列表中的所有元素删除情况,列表变为空列表

>>> App=['Latex','Office','iWork','Python','Typora','Mathtoolpix','itext']
>>> App.clear()
>>> App
[]

5.4 del

可以使用del list []来删除列表中某一个元素

>>> App=['Latex','Office','iWork','Python','Typora','Mathtoolpix','itext']
>>> del App[3] #删除来'python'。
>>> App
['Latex', 'Office', 'iWork', 'Typora', 'Mathtoolpix', 'itext']

6. 排序

在进行某些运算或者程序运行时,需要对列表进行排序,甚至需要反向排序。

6.1 sort

list.sort(cmp=None, key=None, reverse=False)
#reverse = True 降序, reverse = False 升序(默认

只适用于全部为数字或者全部为字符串的排序,并且排序之后原列表改变,如果仍需要调用之前的列表,则采用本篇文章前面的总结:切片复制或者list.copy()

全部都为字母则按照a-z顺序排列

App=['Latex','Office','iWork','Python','Typora','Mathtoolpix','itext']
>>> App.sort() # 按照a-z的顺序排列
>>> App
['Latex', 'Mathtoolpix', 'Office', 'Typora', 'iWork', 'itext']
>>> App.sort(reverse=True) #按照字母的降序排列
>>> App
['itext', 'iWork', 'Typora', 'Office', 'Mathtoolpix', 'Latex']

如果字符串的首字母有大写和小写,则按照A-Za-z的顺序排列,如果reverse=True,则反过来降序。

>>> App=['katex','Office','iWork','python','typora','Mathtoolpix','itext']
>>> App.sort()
>>> App
['Mathtoolpix', 'Office', 'iWork', 'itext', 'katex', 'python', 'typora']

如果全部都为数字,则从小到大排列。

>>> numbers=[3,6,23,6,7,1,3]
>>> numbers.sort()
>>> numbers
[1, 3, 3, 6, 6, 7, 23]

6.2 sorted

sorted(list)直接返回的就是排序之后的列表,但是不改变原来的列表。

>>> a=[1,5,3,6,7,2,3]
>>> b=sorted(a)
>>> b  #改变顺序赋值给b
[1, 2, 3, 3, 5, 6, 7]
>>> a #不改变原来的列表顺序
[1, 5, 3, 6, 7, 2, 3]

6.3 reverse

list.reverse()把列表中的元素反向排序。

>>> Pro=['Max','age','height','weight']
>>> Pro.reverse()
>>> Pro
['weight', 'height', 'age', 'Max']
#list[::-1]和list.reverse()一样的作用,可以把列表反向输出,但是[::-1]不改变原列表
>>> Pro[::-1] 
['Max', 'age', 'height', 'weight']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值