列表
python中的数据类型:数字(不可变)、字符串(不可变)、列表(可变)、元祖(不可变)、字典(可变)、集合(不可变)
容器类型的数据:列表、元祖、字典、集合(序列)
列表(数组):一个列表中可以存储多个不同类型的数据
列表存储数据的方式:将多个数据放到一个中括号[]里面,多个数据之间用逗号隔开
列表特点:列表是可变的(指的是里面的元素的个数和值是可变的)
中括号[]是列表的标志
-
1.声明一个列表:
声明了一个列表list1,有5个元素,分别是1,2,3,10.9,'abc'
list1 = [1, 2, 3, 10.9, 'abc']
print(list1)
声明一个空的列表
list2 = []
-
2.获取列表元素
a.获取单个元素(通过元素获取下标)
下标的范围:0元素个数-1;-1元素个数
注意:通过下标获取元素的时候,下标不能越界
list1 = [1, 2, 3, 10.9, 'abc']
print(list1[0]) # 获取下标是0的元素
print(list1[-1])
print(list1[-2])
b.获取列表中的部分元素(切片)
列表名[开始下标:结束下标],列表名[开始下标:结束下标:步长]
list3 = [2, 10.5, 'aa', 'abc', 10]
print(list3[1:4]) # 获取到的是1~3下标的值,获取不到4下标的值
print(list3[:4]) # 从第一个元素开始到下标为3的所有元素
print(list3[2:]) # 获取从下标是2开始到列表最后的所有元素
print(list3[:]) # 获取列表开始到结束的所有元素
print(list3[0:4:2]) # 获取的是从下标为0开始到下标为3,每2个元素取一个
print(list3[::2]) # 获取开始到结束中,下标为偶数的元素
c.遍历列表
list4 = [1, 34, 6, 2, 8, 91, 4]
for item in list4:
if item % 2 == 0:
print(item)
sum1=0
for x in list4:
sum1 += x
print(sum1)
使用while循环
i = 0 # i就是列表元素对应的下标
while i < len(list4):
print(list4[i])
i += 1
获取下标是奇数的元素
i = 1
while i < len(list4):
print(list4[i])
i += 2
i = 0
while i < len(list4):
if i % 2 == 0:
i += 1
continue
print(list4[i])
i += 1
在列表中添加元素
list1 = []
-
1.append方法:列表名.append(元素)
append是将元素添加到列表的最后
list1.append('abc')
print(list1)
list1.append(10)
print(list1)
练习:找出列表中[1, 34, 5, 6, 89, 3, 2, 4]所有的偶数,并保存起来
list2 = [1, 34, 5, 6, 89, 3, 2, 4]
list3 = []
for x in list2:
if x % 2 == 0:
list3.append(x)
print(list3)
-
2.insert:列表名.insert(下标,元素)
在指定的下标前插入指定的元素
注意:这儿的下标可以越界
list4 = [1, 2, 3, 4, 5, 6, 7, 8]
list4.insert(1, 'a')
print(list4)
通过insert在4和5之间插入元素'b';再在8的后面插入元素'c'
list4 = [1, 2, 3, 4, 5, 6, 7, 8]
list4.insert(4, 'b')
print(list4)
list4.append('c')
print(list4)
list4.insert(8, 'c') # 当下标大于等于列表的长度,会插到列表的最后
print(list4)
-
2.修改元素:通过下标拿到对应的元素,然后重新赋值
list1 = [1, 2, 3, 4, 5, 6] list1[1] = 20 print(list1)
list1 = [1, 2, 3, 4, 5, 6]
让列表的所有元素变为原来的2倍
list1[:] = 2, 4, 6, 8, 10, 12
print(list1)
list1 = [1, 2, 3, 4, 5, 6]
for x in range(0, len(list1)):
list1[x] = list1[x] * 2
print(list1)
让列表中偶数位的元素变为原来的2倍
list1 = [1, 2, 3, 4, 5, 6]
print(list1[::2])
for x in range(0, len(list1)):
list1[x] = list1[x] * 2
print(list1[::2])
删除元素
-
1.del语句:在python中,del可以删除任何内容
del语句删除列表元素:del 列表名[下标]
注意:删除的时候下标也是不能越界
str1 = 'Hello'
list1 = ['a', str1, 10+20, 'b', True]
print(list1)
删除下标为1的元素
del list1[1]
print(list1)
删除列表中所有的偶数
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
出错
x = (0~7)
x = 0 list1[0] = 1 list = [1, 2, 3, 4, 5, 6, 7, 8]
x = 1 list1[1] = 2 list = [1, 3, 4, 5, 6, 7, 8]
x = 2 list1[2] = 4 list = [1, 3, 5, 6, 7, 8]
x = 3 list1[3] = 6 list = [1, 3, 5, 7, 8]
x = 4 list1[4] = 8 list = [1, 3, 5, 7]
x = 5 list1[5] = 越界
for x in range(0, len(list1)):
if list1[x] % 2 == 0:
del list1[x]
通过下标删除要注意下标的重新分配的问题
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = 0
while x < len(list1):
if list1[x] % 2 == 0:
del list1[x]
else:
x += 1
print(list1)
删除列表中的字符串
isinstance(变量,类型):判断指定变量/值是否是指定的类型
str(字符串)、int(整型)、float(浮点型)、bool(布尔)、list(列表)、tuple(元祖)、dict(字典)
re = isinstance('aa', str) # 获取'aa'是否是字符串
print(re)
list3 = ['a', 1, 20, 'pp', 19.3, 'ohk']
x = 0
while x < len(list3):
if isinstance(list3[x], str):
del list3[x]
else:
x += 1
print(list3)
-
2.通过remove方法删除指定元素
格式:列表名.remove(元素)
list4 = ['a', 'b', 'c', 1, 2, 3]
list4.remove('c')
print(list4)
如果列表中有多个相同元素,remove只删除第一个
list4 = ['a', 'b', 'c', 1, 2, 'c']
list4.remove('c')
print(list4)
删除列表[1, 3, 4, 7, 8, 2, 3, 4, 1]中所有的奇数
list5 = [1, 3, 4, 7, 8, 2, 3, 4, 1]
x = 0
while x < len(list5):
value = list5[x]
if value % 2 != 0:
list5.remove(value)
else:
x += 1
print(list5)
-
3.使用pop()方法删除指定下标的元素
格式:列表名.pop(下标) 从列表中取出指定下标对应的元素
格式:列表名.pop() 从列表中取出最后一个元素
list6 = [1, 2, 3, 4, 5, 6]
delitem = list6.pop(1) # 将下标是1的元素从list6中取出,并存到delitem中
print(delitem, list6)
del_item = list6.pop()
print(del_item, list6)
将一个列表[1, 2, 3, 4, 5, 6]中的元素全部取出放到另一个列表里面变成[6, 5, 4, 3, 2, 1]
list6 = [1, 2, 3, 4, 5, 6]
list7 = []
while len(list6) > 0:
# 从前往后取
value = list6.pop(0)
list7.insert(0, value)
# 从后往前取
# value = list6.pop()
# list7.append(value)
print(list6)
print(list7)
常用函数
-
1.求列表的长度
list1 = [1, 2, 3, 4, 5, 6] length = len(list1) print(length)
-
2.列表的加操作
列表1 + 列表2 :将列表1和列表2中的元素,组合成新的列表
list2 = [1, 2, 3, 4] + ['a', 'b', 'c', 'd']
print(list2)
-
3.列表的*的操作
列表*数字 将列表中元素重复指定次数,组合成一个新的列表
list3 = [10, 2] * 4
print(list3)
-
4.in 和 not in
元素in列表:判断指定的元素是否在指定的列表中
list4 = ['abc', '123', 1, 10]
re = 'abc' in list4
print(re)
元素 not in 列表:判断指定元素是否不在列表中
re = 'ab' not in list4
print(re)
-
5.获取列表中的最大元素
格式:max(列表)
list5 = [1, 34, 6, 78, 90, 12, 35]
max1 = max(list5)
print(max1)
list6 = ['a', 'b', 'c', 'd', 'aaa']
print(max(list6))
注意:获取最大值或最小值的时候,列表中的元素的类型要么都是数字,要么都是字符串
list6 = ['a', 'b', 96, 97, 98]
print(max(list6))
TypeError: '>' not supported between instances of 'int' and 'str'
-
6.获取列表中的最小值
格式:min(列表)
list5 = [1, 34, 6, 78, 90, 12, 35]
print(min(list5))
list6 = ['a', 'b', 'c', 'd', 'aaa']
print(min(list6))
练习:求比赛的平均分数(5个裁判,给表演打分。去掉一个最高分,最低分,最后的平均分)
import random
list1 = []
for _ in range(5):
num = random.randint(0, 10) # 随机产生浮点数是random.uniform
list1.append(num)
print(list1)
去掉最高分和最低分
max1 = max(list1)
min1 = min(list1)
list1.remove(max1)
list1.remove(min1)
计算平均数
sum(列表):计算列表元素中所有的元素的和
print(sum(list1)/len(list1))
-
7.将其他的数据转换成列表
个数:list(数据)
将字符串转换成列表
list1 = list('abcdef')
print(list1)
将列表转换成字符串(不是仅仅将列表的元素拼接成字符串的,而是将整个列表所有的结构都作为字符串的字符)
str1 = str([1, 2, 3, 4, 'a'])
print(str1)
将range转换成列表
list2 = list(range(10))
print(list2)