列表操作
列表时用方括号括起来的一组元素值,是可变变量,可通过下表取值,也可以通过下表来修改值,列表中的元素是有序的,可以是不同的基本数据类型,如:
names=[1, 2, 3, “abc”, “def”]
列表取值时,下标也是从0开始,最大下标是元素个数减1,即len(names)-1
列表操作的常用方法:
增:
names.append('zhaocunlei') #从末尾追加元素
names.insert(0,'yinwenqiao') #指定位置添加元素
删:
names.pop() #删除列表末尾元素,删谁也把它的值返回了,可用变量接收、用print查看
names.pop(2) #删除指定位置的元素,传参为列表元素下标
names.remove('yinwenqiao') #删除指定值,传参是列表的一个元素值,不能空参
#该方法不返回被删除的元素值,用print查看返回为None
# print('remove 方法的返回值',names.remove('yinwenqiao'))
# del names[0] #使用del关键字删除指定元素
# names.clear() #清空列表
查:
print(names.count('hsdfsdf')) #查找值在list里面的次数
print(names.index('yinwenqiao'))
#返回查找元素的下标,如果有多个话返回第一个的,如果没有的话就会报错
print(names.index('yinwenqiao',3,4)) #后面可以加上查找开始位置和结束位置
print('zhangyizhou' in names) #用in来判断一个元素是否在list里面,返回布尔值
print(names[-3]) #下标是-1的话,代表最后一个元素
改:
stus = ['yangwb','yangwn','yanghj']
print('加起来的',stus+names) #两个列表合并,并返回新列表可用变量接收,原列表不变
stus.extend(names) #把另一个列表里面的每个值挨个添加到前面的列表中,不返回值
print(stus.extend(names)) # 结果是None
print(stus) # 被增加后的样子
nums = [23,34,21,2,456,35,12324324]
nums.sort() #排序,默认是升序,不返回值
print('sort:',nums)
nums.sort(reverse=True) #排序,指定reverse=True就是降序,不返回值
print('sort降序:',nums)
print(nums.reverse()) #倒序
print(nums)
以上都是单列表的一些基本操作,列表还有多维的,多维列表元素查找时不要慌,引用一样是用下标,注意维度要从外到内。
lis = [1,'lily',19.8,['lily','lilei',['heheh','haha']]]
print(lis[3][2][1]) # 结果为haha
切片操作:
切片的意思就是从list里面或者字符串里面取某个或某几个元素,切片操作对字符串也是完全适用的。
name1 = 'zcl,pyzyz'
names = ['zcl','py','zyz']
print(names[0:2]) #从第几个取到第几个,这个也是顾头不顾尾,此例取的是第0个和第一个这俩元素
print(names[:2]) #如果是从第一个开始取,取到某一个下标结束,那么最前面是可以不写的
print(names[1:]) #如果是从前面某个开始取,取到最后面结束,那么最后面是可以不写的
print(names[:]) #如果最前面和最后面都不写的话,取整个列表
nums = list(range(1,11))
print(nums[1:10:2]) #如果最后面写上步长的话,就是每隔几个取一次,此例结果是 [2, 4, 6, 8, 10]
print(nums[::2]) #此例结果是 [1, 3, 5, 7, 9]
print(nums[::-2]) #当切片的步长为负数时,是从末尾开始取值的,然后隔几个取一次 [10, 8, 6, 4, 2]
print(nums[::-1]) #如果步长为-1的时候,还有反转的功能 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]