Python基础—列表

列表

列表是容器型数据类型,能够更方便的保存数据

一、列表的性质

1.列表是一个有序的容器型数据类型(有序代表列表中每个元素有自己的固定位置:下标)

2.列表是一个可变的容器型数据类型(可变代表列表中元素可以被修改:增删改

3.列表使用[ ],列表中元素之间使用,逗号隔开

4.列表的数据类型:list,列表中可以存放任意类型的数据

5.列表中可以出现重复元素

二、创建一个空列表

list = []
print(list, type(list))

三、下标和切片

下标:每个元素都有自己的位置

从左向右:正向下标,从0开始递增

从右向左:负向下标,从-1开始递减

list1 = [100, 200, 300, 400, 500]
# 正向下标:0    1    2    3    4
# 负向下标:-5   -4   -3   -2   -1

通过下标获取元素:语法 — 容器[下标]

print(list1[2], list1[-3])

切片:能够从原容器中获得新的子容器(从原容器中获取N个元素组成新的容器)

切片语法:

容器[start: stop: step]

start:开始参数,默认为0,可以省略不写

stop:结束参数,当要获取最后一个元素时,可以不写

step:步长,决定下一个被获取元素的下标,默认为1,可以省略不写

切片也是一个左闭右开的区间,下一个被获取元素的下标 = 当前被获取元素的下标 + step

当step>=1时,start代表的元素必须在stop代表的元素左侧

当step<=-1时,start代表的元素必须在stop代表的元素右侧,同时步长step<=-1也表示逆序

四、列表的遍历(列表中使用循环)

1.直接遍历
for i in list1:
	print(i)
2.间接遍历
len():能够查看容器中元素的个数(返回容器的长度)
print(len(list1))
for j in range(len(list1)):
	print(f'下标{j} ---> 元素{list1[j]}')

五、列表的拼接与重复

1.列表的拼接

print(list1 + list2)

2.列表的重复

print(list1 * 5)

六、列表的增删改

1.增加

game = []

append( ):向列表中追加元素

game.append('王者荣耀')
game.append('和平精英')
print(game)

运行结果:['王者荣耀', '和平精英']

insert( ):向列表中插入元素

game.insert(1, '穿越火线')
print(game)

运行结果:['王者荣耀', '穿越火线', '和平精英']
1代表插入元素的位置

2.修改

容器[下标] = 新的值

game[2] = '欢乐斗地主'

运行结果:['王者荣耀', '穿越火线', '欢乐斗地主']

3.删除

del:根据指定下标删除元素

del game[0]
print(game)

运行结果:['穿越火线', '欢乐斗地主']

remove( ):删除指定元素

game.remove('穿越火线')

运行结果:['欢乐斗地主']

pop:根据下标删除元素,使用pop删除的元素还能被找回

content = game.pop(0)
print(game, content)

运行结果:[] 欢乐斗地主

clear( ):直接清空列表

list3 = ['阿甘正传', '海王', '阿凡达', '霸王别姬', '憨豆特工', '红海行动']
list3.clear()
print(list3)

运行结果:[]

以上列表的增删改操作都是建立在games这个列表基础上的。

删除操作:del、remove、clear等于电脑中直接删除文件。

而pop等于将文件删除时放入回收站,还可以恢复。

七、列表的相关方法

1.index:从列表中查找指定元素的下标。(如果index找不到元素会报错)

list4 = [1, 2, 3, 4, 5, 6, 7, 5]
result = list4.index(5)
print(result)

运行结果:4
还可以指定开始查找的位置(从下标为6的位置开始查找5)。

2.sort:将列表从小到大排序,sort方法修改的是列表本身

list1 = [1, 2, 3, 4, 5, 6, 7, 5]
list1.sort()
print(list1)

运行结果:[1, 2, 3, 4, 5, 5, 6, 7]

添加参数reverse=True,就可以从大到小排序

list1.sort(reverse=True)
print(list1)

运行结果:[7, 6, 5, 5, 4, 3, 2, 1]

3.sorted:将列表从小到大排序,sorted方法不会修改列表本身

list2 = [2, 4, 1, 0]
print(sorted(list2), list2)

运行结果:[0, 1, 2, 4] [2, 4, 1, 0]

添加参数reverse=True,就可以从大到小排序

print(sorted(list2, reverse=True), list2)

运行结果:[4, 2, 1, 0] [2, 4, 1, 0]

4.reverse:能够将列表倒序,reverse修改的是列表本身

list4 = [1, 2, 3, 4, 5]
list4.reverse()
print(list4)

运行结果:[5, 4, 3, 2, 1]

5.extend:能够将容器中的元素全部添加到列表中

list5 = []
list5.append(list4)
list5.extend(list4)
list5.extend(range(0, 9, 2))
print(list5)

运行结果: [[5, 4, 3, 2, 1], 5, 4, 3, 2, 1, 0, 2, 4, 6, 8]

6.count:计数,统计列表中某个元素的出现次数

list6 = [[5, 4, 3, 2, 1], 5, 4, 3, 2, 1, 0, 2, 4, 6, 8]
print(list6.count(2))

运行结果:2

7.sum:针对于数字列表(列表中全部都是数字的列表)求和

list7 = [1, 2, 3]
print(sum(list6))

运行结果:6

8.max、min:查看列表中的最大值、最小值

list8 = [1, 2, 3]
print(max(list8), min(list8))

运行结果:3 1

八、列表比较大小

1.列表比较大小比较的是列表中元素的大小。

2.列表中参与比较大小的元素位置是一一对应的。

3.从第一对元素开始比较,直到分出大小;否则,两个列表相等。

4.比较大小的元素必须是相同数据类型的。

list1 = [1, 2, 3]
list2 = [2]
list3 = [1, 2, 4]
print(list1 > list2)
print(list1 < list3)

运行结果:False 
         True

九、列表的删除

例:有一个长度是10的列表,数组内有10个人名,要求去掉重复的

names = [‘张三’, ‘李四’, ‘大黄’, ‘张三’,‘张三’, ‘李四’, ‘大黄’, ‘张三’, ‘张三’, ‘李四’]

最后得到names = [‘张三’, ‘李四’, ‘大黄’]

1.间接去重

names = ['张三', '李四', '大黄', '张三','张三', '李四', '大黄', '张三', '张三', '李四']
newNames = []
for i in names:
	if i not in newNames:
		newNames.append(i)
print(newNames)

运行结果:['张三', '李四', '大黄']
not in 和 in为成员运算,判断某个元素是否在容器中,返回True或者False。

2.for循环元素个数去重

names = ['张三', '李四', '大黄', '张三','张三', '李四', '大黄', '张三', '张三', '李四']
for i in range(len(names)-1, -1, -1):
    if names.count(names[i]) > 1:
        del names[i]
print(names)

运行结果:['张三', '李四', '大黄']

3.while循环判断元素个数

names = ['张三', '李四', '大黄', '张三','张三', '李四', '大黄', '张三', '张三', '李四']
x = 0
while x <= len(names) - 1:
	if names.count(names[x]) > 1:
	 del names[x]
	else:
	x = x + 1
print(names)

运行结果:['大黄', '张三', '李四']

十、列表推导式

作用:能够更快的一次性生成有更多元素的列表

1.语法:[表达式 for 变量 in 容器]

list1 = [i for i in range(1,11)]
print(list1)

运行结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2.带条件的列表推导式语法:[表达式 for 变量 in 容器 if 条件]

list2 = [i for i in range(1, 11) if i % 2 != 0]
print(list2)

运行结果:[1, 3, 5, 7, 9]

3.双重或多重循环语法:[表达式 for 变量 in 容器 for 变量 in 容器]

list3 = [f'{x} * {y} = {x * y}'for x in range(1, 4) for y in range(1, 4)]
print(list3)

运行结果:['1 * 1 = 1', '1 * 2 = 2', '1 * 3 = 3', '2 * 1 = 2', '2 * 2 = 4', '2 * 3 = 6', '3 * 1 = 3', '3 * 2 = 6', '3 * 3 = 9']

十一、性能对比

在某种程度上,列表推导式可以去替代append方法

列表推导式也是向列表中添加元素。

列表推导式性能优于append方法

例:同时使用append和列表推导式,向列表中添加元素,性能对比。

import time

start1 = time.time()
list1 = []
for i in raneg(1, 100000000):
	list1.append(i)
end1 = time.time()

start2 = time.time()
list2 = [i for i in range(1, 100000000)]
end2 = time.time()

print(f'方法一花费时间:{end1 - start1}')
print(f'方法二花费时间:{end2 - start2}')

运行结果:方法一花费时间:9.436340808868408
         方法二花费时间:6.642916440963745
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

㤅uu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值