python学习5

本文详细介绍了Python列表的创建、特点、查询、遍历、操作及排序等基础知识,包括如何添加、删除、修改元素,以及切片、排序方法。此外,还涉及了列表生成式和常用函数如append、extend、insert等的用法。
摘要由CSDN通过智能技术生成

列表的简单定义

列表相当于其他语言中的数组,但数组中的元素只能是同一类型,而列表不一样,可以是不一样的类型。

列表的创建

创建列表时,使用[]进行创建,并且在元素间使用,进行分隔

test=['abc',1,'sgd']

也可以使用内置函数list()

lst1 = list(range(10))
lst2 = list([1,'36df'])

列表的特点

列表元素按顺序有序排列

索引映射唯一一个数据

列表可以储存重复数据

可以混存任意数据类型

根据需要动态分配和回收内存

索引为负时,表示从列表最后开始找元素,例如list[-1]表示最后一个元素,list[-2]表示倒数第二个元素

索引从0开始

列表的查询操作

获取指定元素的索引(index())

使用index()函数

list=['hello','you','yes','no','you']
print(list.index('you'))  #输出1
print(list.index('green')) #抛出一个ValueError错误
#在列表中指定的一部分中查找
#这里表示从列表索引位置2-4里面找,即'yes','no','you'中找,返回4
print(list.index('you',2,5)) 

注意:当列表中有多个指定元素时,返回找到的第一个指定元素的索引,当指定元素不在列表中时,抛出一个ValueError错误;还可以在列表中指定的一部分中查找

获取列表中的单个元素

正向索引:从0 到 n-1

逆向索引:从-n到-1

获取列表中的多个元素

使用切片,list[start:stop:步长],从start开始到stop,不包含stop,步长如果没有设定,默认为1

切片的结果是原列表的拷贝

list=['hello','you','yes','no',1,2,6,8,9]
print(list[:])#切片结果是整个列表
#省略开始,则从列表最开始开始切片,得到['hello', 'you', 'yes']
print(list[:3:1])
#省略m末尾,则切片一直切到列表末尾,得到['yes', 'no', 1, 2, 6, 8, 9]
print(list[2::1])

注意,步长可以是负数,此时从start开始往前切片

#步长为负数
#从索引3的位置,向前切片,一直到索引1的位置的前一个元素,得到['no', 'yes']
print(list[3:1:-1])
#从列表最后一个元素开始,向前切片,一直到索引4的位置的前一个元素,得到[9, 8, 6, 2]
print(list[:4:-1])
#从索引2的位置,向前切片,一直到列表开始,得到['yes', 'you', 'hello']
print(list[2::-1])
#倒序输出列表
print(list[::-1])

切片也可以用于复制列表

list1=[1,2,3,4,5]
#复制列表
list2=list1[:]

注意不能直接list1=list2,不然对list2的操作也会到list1上

判断元素是否在列表中

可以用in和not in来判断

list=['yes','no']
#判断'you'是否在列表中
if 'you' in list:
    print('NO!')
#判断'you'是否不在列表中
if 'you' not in list:
    print('NO!')

列表元素的遍历

可以用for - in 循环来遍历

list=['you','are','not','a','good','man']
#遍历输出列表list中的元素
for item in list:
    print(item)

对列表的操作

增加列表元素

append()和extend()

在列表最后增加一个元素

list=['you','are','not','a','good','man']
#在列表最后增加一个元素a
#得到['you', 'are', 'not', 'a', 'good', 'man', 'a']
list.append('a')
print(list)
#将一个列表作为一个元素直接添加到列表末尾
#得到['you', 'are', 'not', 'a', 'good', 'man', [1, 2]]
b=[1,2]
list.append(b)
print(list)

而如果想要将一个列表中的元素添加到另一个列表的末尾,则使用extend()函数

list=['you','are','not','a','good','man']
#将一个列表中的元素添加到另一个列表末尾
#得到['you', 'are', 'not', 'a', 'good', 'man', 1, 2]
b=[1,2]
list.extend(b)
print(list)

insert()

在列表任意位置插入一个元素

list.insert(6,'!')
#在索引位置6上添加元素
#得到['you', 'are', 'not', 'a', 'good', 'man', '!']
list.insert('!')
#如果添加的对象是一个列表,此时也是将列表作为一个元素
b=[4,6]
#在索引位置5上添加列表b
#得到['you', 'are', 'not', 'a', 'good', [4, 6], 'man', '!']
list.insert(5,b)

切片

在任意位置添加很多元素

list=['you','are','not','a','good','man']
b=[4,6]
#在列表list索引位置1往后的元素切掉,再拼接上列表b的元素
#得到['you', 4, 6]
list[1:]=b


list=['you','are','not','a','good','man']
b=[4,6]
#在列表list索引位置4上添加列表b的元素
#得到['you', 'are', 'not', 'a', 4, 6, 'good', 'man']
list[4:4]=b

list=['you','are','not','a','good','man']
b=[4,6]
#将列表list索引位置3、4上的元素替换为列表b的元素
#得到['you', 'are', 'not', 4, 6,  'man']
list[3:5]=b
print(list)

删除列表元素

remove()

删除给定的一个元素,并且一次只删除一个,列表中有多个给定的元素时,只删除第一个

list=['you','are','not','a','good','man','a']
#删除list中的一个元素a
#得到['you', 'are', 'not', 'good', 'man', 'a']
list.remove('a')
print(list)

元素不存在时抛出ValueError

pop()

删除给定位置上的元素并且返回这个元素 ,当没有给索引时,删除列表最后一个元素

list=['you','are','not','a','good','man','!']
#删除list中索引位置为4的元素
#输出['you', 'are', 'not', 'a', 'man', '!'] good
a=list.pop(4)
print(list,a)


list=['you','are','not','a','good','man','!']
#删除list中最后一个元素
#输出['you', 'are', 'not', 'a', 'good', 'man'] !
a=list.pop()
print(list,a)

切片

一次删除多个元素

list=['you','are','not','a','good','man','!']
#删除list中索引位置为2,3,4的元素
#输出['you', 'are', 'man', '!']
list[2:5]=[]
print(list)

clear()和del()

clear()清除列表,将列表变为空列表,但列表还存在

del()直接将列表删除,列表不再存在

修改列表元素

修改指定元素

修改指定索引位置的值

list=['you','are','not','a','good','man','!']
#将索引位置2上的元素修改
#得到['you', 'are', 'really', 'a', 'good', 'man', '!']
list[2]='really'
print(list)

修改指定切片

利用切片的方法一次修改多个值

list=['you','are','not','a','good','man','!']
#将索引位置3,4,5上的元素修改
#得到['you', 'are', 'not', 1, 2, 3, '!']
list[3:6]=[1,2,3]
print(list)

对列表进行排序

sort()方法

调用sort()方法,默认将列表中元素按照从小到大排序,可以使用reverse=TRUE来进行降序排序

list=['a','f','d','r','s','c','d']
#升序排序
#得到['a', 'c', 'd', 'd', 'f', 'r', 's']
list.sort()
print(list)
#降序排序
#得到['s', 'r', 'f', 'd', 'd', 'c', 'a']
list.sort(reverse=True)
print(list)

sorted()

内置函数sorted()也是默认将列表中元素按照从小到大排序,可以使用reverse=TRUE来进行降序排序,但这个函数不会改变原来的列表,而是返回一个新的被排序后的列表

list=['a','f','d','r','s','c','d']
#升序排序
#得到list1为['a', 'c', 'd', 'd', 'f', 'r', 's']
#原列表不变
list1=sorted(list)
print(list1)

#降序排序
#得到list2为['s', 'r', 'f', 'd', 'd', 'c', 'a']
#原列表不变
list2=sorted(list,reverse=True)
print(list2)

列表生成式

即生成列表的公式

格式:[表示列表元素的表达式 for 自定义变量 in 可迭代对象]

#使用列表生成式得到[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
list=[i+3 for i in range(10)]
print(list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值