list
列表list基础1.什么是列表(list)列表是容器型数据类型; 将[]作为容器标志,里面多个数据用逗号隔开:[元素1, 元素2, 元素3,…]列表是可变(可变指的是元素的个数可变;元素的值变量;元素的顺序可变)、列表是有序的(每个元素都有一个表示元素在列表中位置的序号)元素(容器中的每个独立的数据就是元素):没有要求(任何类型的数据都可以作为列表的元素)students = ['张丁也', '钟
列表
list基础
1.什么是列表(list)
列表是容器型数据类型; 将[]作为容器标志,里面多个数据用逗号隔开:[元素1, 元素2, 元素3,…]
列表是可变(可变指的是元素的个数可变;元素的值变量;元素的顺序可变)、列表是有序的(每个元素都有一个表示元素在列表中位置的序号)
元素(容器中的每个独立的数据就是元素):没有要求(任何类型的数据都可以作为列表的元素)
students = ['张丁也', '钟林君', '程赟', '陶皞', '刘俊']
print(students)
names = [] # [] - 空列表
- 查 - 获取元素
2.1 查单个 - 获取列表中某一个元素
语法:
列表[下标] - 获取列表中指定下标对应的元素
说明:
列表 - 任何结果是列表的表达式,例如:具体的一个列表值、保存列表的变量
[] - 固定写法
下标 - 又叫索引。它是元素在列表中的位置信息。
取值方式1:从0开始依次增加,其中0表示第一个元素,1表示第二个元素
取值方式2:从-1开始依次减少,其中-1表示倒数第一个元素,-2表示倒数第二个元素…
names = ['林俊杰', '周杰伦', '王力宏', '陈奕迅', '薛之谦', '邓紫棋']
print(names[2]) # 王力宏
# print(names[6]) # 报错: IndexError: list index out of range
2.2 切片(查部分) - 同时获取列表中的多个元素
原理:通过提供下标的范围来获取范围内下标对应的元素
语法:
列表[开始下标:结束下标:步长] - 从开始下标开始,每次下标值增加步长,取到结束下标前为止。
注意:
1)结束下标对应的元素一定取不到, 开始下标对应的元素可以取到
2)如果步长为正,表示从前往后取,这个时候开始下标对应的位置必须在结束下标对应的位置前,否则结果是[]
3)如果步长为负,表示从后往前取,这个时候开始下标对应的位置必须在结束下标对应的位置后,否则结果是[]
names = ['林俊杰', '周杰伦', '王力宏', '陈奕迅', '薛之谦', '邓紫棋']
print(names[1:4:1]) # ['周杰伦', '王力宏', '陈奕迅']
print(names[1:5:-1]) # []
print(names[2:-1:1]) # ['王力宏', '陈奕迅', '薛之谦']
- 省略步长 - 相当于步长是1
列表[开始下标:结束下标]
names = ['林俊杰', '周杰伦', '王力宏', '陈奕迅', '薛之谦', '邓紫棋']
print(names[1:-1])
2)省略开始下标
列表[:结束下标:步长] - 步长为正,从第一个元素开始往后取 ;步长为负,从最后一个元素开始往前取
列表[:结束下标] - 从第一个元素开始往后取
heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
print(heroes[:4:2]) # ['后裔', '诸葛亮']
3)省略结束下标
列表[开始下标::步长] - 步长为正,从开始下标开始取到最后一个元素为止(往后取,取完为止);步长为负,从开始下标开始取到第一个元素为止
列表[开始下标:] - 从开始下标开始取到最后一个元素为止
heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
print(heroes[1:]) # ['李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
print(heroes[2::-1]) # ['诸葛亮', '李元芳', '后裔']
4)一起省
列表[::步长]
列表[:]
heroes = ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
print(heroes[::-1]) # ['孙膑', '王昭君', '甄姬', '娜可露露', '诸葛亮', '李元芳', '后裔']
print(heroes[::2]) # ['后裔', '诸葛亮', '甄姬', '孙膑']
print(heroes[:]) # ['后裔', '李元芳', '诸葛亮', '娜可露露', '甄姬', '王昭君', '孙膑']
2.3 遍历
方法一: 直接获取元素
for 变量 in 列表:
循环体
变量取到的就是列表中的每个元素
games = ['王者荣耀', '和平精英', '狼人杀', '植物大战僵尸', '开心消消乐', '红色警戒']
for x in games:
print(x)
方法二:先获取每个元素对应的下标,然后再通过下标获取元素
for 变量 in range(列表长度):
列表[变量]
len(列表) - 获取列表中元素的个数
for x in range(len(games)):
print(games[x])
操作
1.增 - 往列表中添加元素
1.1 列表.append(元素) - 在列表的最后添加指定的元素
subjects = ['iOS', '安卓']
print(subjects)
subjects.append('h5')
print(subjects) # ['iOS', '安卓', 'h5']
1.2 列表.insert(下标, 元素) - 在列表的指定下标对应的元素前插入指定元素
tvs = ['甄嬛传', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
tvs.insert(1, '庆余年')
print(tvs) # ['甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
2.删 - 删除列表中的元素
2.1 del 列表[下标] - 删除列表中指定下标对应的元素
tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
del tvs[-2]
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '琅琊榜']
2.2 列表.remove(元素) - 删除列表中指定的元素
如果元素不存在会报错;如果被删除的元素在列表中有多个,只删最前面的那一个
tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
tvs.remove('情深深雨蒙蒙')
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '琅琊榜']
# tvs.remove('三生三世十里桃花') # ValueError: list.remove(x): x not in list
tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '庆余年', '情深深雨蒙蒙', '琅琊榜']
tvs.remove('庆余年')
print(tvs) # ['西游记', '甄嬛传', '还珠格格', '庆余年', '情深深雨蒙蒙', '琅琊榜']
2.3
列表.pop() - 取出列表最后一个元素, 并且返回
列表.pop(下标) - 取出列表中指定下标对应的元素
tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
result = tvs.pop()
print(tvs) # ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙']
print(result) # 琅琊榜
tvs = ['西游记', '甄嬛传', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
result = tvs.pop(1)
print(tvs) # ['西游记', '庆余年', '还珠格格', '情深深雨蒙蒙', '琅琊榜']
print(result) # 甄嬛传
3.改 - 修改某个元素的值
列表[下标] = 新元素 - 修改列表中指定下标对应元素为新元素
tvs = ['琅琊榜', '庆余年', '甄嬛传']
tvs[0] = '生活大爆炸'
print(tvs) # ['生活大爆炸', '庆余年', '甄嬛传']
其他操作
-
列表数学运算: +、*
1.1 列表1 + 列表2 - 将两个列表合并产生一个新的列表
list1 = [10, 20, 30] list2 = [100, 200] print(list1 + list2) # [10, 20, 30, 100, 200]
1.2 列表N / N列表 - 将列表中元素重复N次产生一个新的列表
list2 = [100, 200] print(list2 * 3) # [100, 200, 100, 200, 100, 200]
2.比较运算:==、!=、>、<、>=、<=
2.1 比较是否相等
print([10, 20, 30] == [10, 20, 30]) # True
print([10, 20, 30] == [30, 20, 10]) # False
2.2 比较大小 - 比较第一对不相等的元素的大小(两个列表相同位置上的元素是一对)
print([100, 200] > [10, 20, 30, 40, 10000]) # True
print([100, 200, 300] > [100, 1000, 2]) # False
- in 和 not in
元素 in 列表 - 判断指定的列表中是否存在指定元素
元素 not in 列表 - 判断指定的列表中是否不存在指定元素
nums = [10, 20, 30]
print(100 in nums) # False
print(100 not in nums) # True
4.相关函数:max、min、sorted、sum、list、len
4.1 max(列表) - 获取列表中最大的元素(这个列表中的元素类型一致,并且元素本身支持比较元素)
min(列表) - 获取列表中最小的元素(这个列表中的元素类型一致,并且元素本身支持比较元素)
nums = [89, 923, 78, 100, 92, 8]
print(max(nums)) # 923
print(min(nums)) # 8
4.2
sorted(列表) - 将列表中的元素从小到大排序,排序后产生一个新的列表
sorted(列表, reverse=True) - 将列表中的元素从大到小排序,排序后产生一个新的列表
nums = [89, 923, 78, 100, 92, 8]
new_nums = sorted(nums)
print(new_nums) # [8, 78, 89, 92, 100, 923]
print(nums) # [89, 923, 78, 100, 92, 8]
new_nums = sorted(nums, reverse=True)
print(new_nums) # [923, 100, 92, 89, 78, 8]
4.3 sum(列表) - 求列表中所有元素的和(列表必须是数字列表)
nums = [89, 923, 78, 100, 92, 8]
print(sum(nums)) # 1290
4.4 list(序列) - 将序列转换成列表(获取序列中所有元素创建一个新的列表)
注意:所有的序列都可以转换成列表
print(list('abc')) # ['a', 'b', 'c']
print(list(range(1, 4))) # [1, 2, 3]
作业
1.已知一个数字列表,求列表中心元素。
list1 = [1,2,3,4]
lens = len(list1)
if lens % 2 == 1:
print('列表中心元素为:',list1[int((lens-1)/2)])
else:
print('列表中心元素为:',list1[int(lens/2)-1],',',list1[int(lens/2)])
2.已知一个数字列表,求所有元素和。
list1 = [1,2,3,4]
print(sum(list1))
3.已知一个数字列表,输出所有奇数下标元素。
list1 = [1,2,3,4]
for index in range(1,len(list1),2):
print(list1[index])
4.已知一个数字列表,输出所有元素中,值为奇数的元素。
list1 = [1,2,3,4,7,5]
for x in list1:
if x % 2 == 1:
print(x)
5.已知一个数字列表,将所有元素乘二。
例如:nums = [1, 2, 3, 4] —> nums = [2, 4, 6, 8]
nums = [1, 2, 3, 4]
for x in range(len(nums)):
nums[x] *= 2
print(nums)
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = [‘张三’, ‘李四’, ‘大黄’, ‘大黄’, ‘张三’, ‘张三’, ‘张三’] -> names = [‘张三’, ‘李四’, ‘大黄’]
names = ['张三', '李四', '大黄', '大黄', '张三', '张三', '张三']
index1 = 0
index2 = 1
while True:
while True:
if names[index1] == names[index2]:
del names[index2]
index2 -= 1
index2 += 1
if index2 == len(names):
break
index1 += 1
index2 = index1 + 1
if index1 == len(names):
break
print(names)
7.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
scores = [1, 4, 5, 6, 9]
scores.remove(max(scores))
scores.remove(min(scores))
result = sum(scores)/len(scores)
print(result)
8.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, ‘a’, 4, 90] B = [‘a’, 8, ‘j’, 1] --> C = [1, ‘a’]
A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] c = [] for x in A: for y in B: if x == y: c.append(x) break print(c)
9.*有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
result = 0
nums = [19, 89, 90, 600, 1]
for x in nums:
if result < x:
result = x
print(result)
10.*获取列表中出现次数最多的元素
例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3
nums = [1, 2, 3,1,4,2,1,3,7,3,3]
count1 = []
for x in nums:
count = 0
for y in nums:
if x == y:
count += 1
count1.append(count)
for x in range(len(count1)):
if count1[x] == max(count1):
break
print(nums[x])
更多推荐
所有评论(0)