列表
基础语法
定义
- python提供的一种容器型数据类型,以[]作为容器标志,多个元素以逗号隔开
特点
- 列表是可变的(元素的个数和值),元素支持增删改操作
- 列表中的元素可以是任何类型的数据
- 同一个列表中可以放入不同类型的数据
列表操作
1.获取单个元素
- list[元素下标]
2.元素下标
从前往后列表下表依次位:0, 1, 2, 3, 5。。
从后往前列表下表依次位:-1, -2, -3, -4, -5。。
3.切片(获取部分元素)
列表[开始下标:结束下标:步长]
注意:列表切片的结果仍是一个列表,是原列表的一部分
步长位正,从前往后取;那么开始下标所在位置必须在结束下标所在的位置的前面
步长位负,从后往前取;那么开始下标所在位置必须在结束下标所在的位置的后面
a.列表[开始下标:结束下标]
b.省略开始下标 -- 列表[:结束下标:步长] / 列表[:结束下标] ----如果步长为正从第一个元素开始往后取 ----如果步长为负从最后一个开始往前取
c.列表【开始下标::步长】 ---从该方向取到最后一个元素
d.列表【::步长】/列表【:】 ---看步长
4.遍历列表
4.1 直接for循环遍历列表获取元素
4.2 如果需要使用 下标,则通过遍历下标 来获取元素
for 变量 in range(len(列表)):
元素 = 列表[变量]
注意:
切片时,下标可以越界
list = [1, 2, 3, 4, 5]
print(list[2:1000])
# 不会报错,执行结果为[3, 4, 5]
元素增删改
1.增
1.1 列表.append(元素) -在指定的列表的末尾添加一个元素
1.2 列表.insert(下标,元素) -在指定下标前面插入指定元素
list = [1, 2, 3, 4]
list.append(5)
print(list)
list.insert(3, 6)
print(list)
2.删
2.1 del 列表[下标] -删除指定下标的元素
2.2 列表.remove(元素) - 删除列表中的指定元素
注意:a.如果元素不存在会报错 b.如果元素在列表中有多个,只删除第一个
2.3 列表.pop() - 取出列表中的最后一个元素,返回被取出的元素
列表.pop(下标) - 取出指定下标的元素,返回被取出的元素
3.改
列表.[下标] = 值 -- 将列表中指定下标的元素修改成指定的值
作业
1.已知一个数字列表,求列表中心元素。
text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0 #list列表的下标
str_num = '' #接收拆分的字符
list = []
for index in range(len(text)):
if text[index] != ',' and text[index] != '.':
str_num += text[index] #拼接逗号前或逗号之间的字符
elif text[index] == ',':
list.append(str_num) #将拼接好的字符填进列表中
str_num = ''
num += 1
else:
list.append(str_num)
break
print(list)
if len(list) % 2 == 0:
#中心元素为下标为 len(list)/2 和 len(list)/2 + 1的两个元素
print(list[int(len(list)/2 - 1)], list[int((len(list)/2))])
else:
print(list[len(list) // 2])
结果:
结果:
2.已知一个数字列表,求所有元素和。
text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
if text[index] != ',' and text[index] != '.':
str_num += text[index]
elif text[index] == ',':
list.append(str_num)
str_num = ''
num += 1
else:
list.append(str_num)
break
print(list)
sum = 0
for index in range(len(list)):
sum += int(list[index])
print(sum)
结果:
3.已知一个数字列表,输出所有奇数下标元素。
text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
if text[index] != ',' and text[index] != '.':
str_num += text[index]
elif text[index] == ',':
list.append(str_num)
str_num = ''
num += 1
else:
list.append(str_num)
break
print(list)
for index in range(len(list)):
if index % 2 != 0:
print(list[index])
结果
4.已知一个数字列表,输出所有元素中,值为奇数的元素
text = input('请输入一组数字,并以逗号隔开,并以句号结束:')
num = 0
str_num = ''
list = []
for index in range(len(text)):
if text[index] != ',' and text[index] != '.':
str_num += text[index]
elif text[index] == ',':
list.append(str_num)
str_num = ''
num += 1
else:
list.append(str_num)
break
print(list)
for num in list:
if int(num) % 2 != 0:
print(num)
结果:
5.已知一个数字列表,将所有元素乘二。
num = 0
str_num = ''
list = []
for index in range(len(text)):
if text[index] != ',' and text[index] != '.':
str_num += text[index]
elif text[index] == ',':
list.append(str_num)
str_num = ''
num += 1
else:
list.append(str_num)
break
print(list)
list2 = []
for num in list:
list2.append(int(num)*2)
print(list2)
结果:
6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
names = ['张三', '李四', '大黄', '张三', '王五', '王朝', '马汉', '元芳', '张三', '陈九']
my_names = []
for name in names:
if name not in my_names:
my_names.append(name)
print(my_names)
结果:
7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表
例如: list1 = [97, 98, 99] -> list1 = ['a', 'b', 'c']
list = [123, 599, 942, 19658]
my_list = []
for num in list:
my_list.append(chr(num))
print(my_list)
结果:
8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)
score = [60, 75, 45, 88, 69, 92, 45, 73, 77, 56]
max = mix = score[0]
for sco in score[1:]:
if sco > max:
max = sco
elif sco < mix:
mix = sco
print(max, mix) #找出最高分和最低分
score2 = []
for s in score:
if s not in score2:
if s == mix or s == max:
continue
else:
score2.append(s)
print(score2) # 去除最高分和最低分
# 求平均分
sum = 0
for x in score2:
sum += x
ave = sum / len(score2)
print(ave)
结果:
9.有两个列表A和B,使用列表C来获取两个列表中公共的元素
例如: A = [1, 'a', 4, 90] B = ['a', 8, 'j', 1] --> C = [1, 'a']
A = [1, 'a', 2, 'b', 3, 'c']
B = [1, 2, 3, 4, 5, 6]
C = []
for x in A:
if x in B:
C.append(x)
print(C)
结果:
10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)
例如: nums = [19, 89, 90, 600, 1] —> 600
nums = [19, 89, 90, 600, 1]
max = 0
for x in nums:
if max < x:
max = x
print(max)
结果:
11.获取列表中出现次数最多的元素
例如: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]
sub = 0 #保存出现次数最多的值的下标
max = 0 #保存出现次数最多的元素,出现次数
temp = 0 #保存元素出现的次数
for index in range(len(nums)):
for n in nums[:]:
if n == nums[index]:
temp += 1
else:
continue
if max < temp:
max = temp
sub = index
print(nums[sub])
结果:
方法二:
nums = [1, 2, 3, 1, 4, 2, 1, 3, 7, 3, 3]
nums_copy = []
temp = []
# 去除重复值,得到新数组
for x in nums:
if x not in nums_copy:
nums_copy.append(x)
print(nums_copy)
# 遍历新数组,得到每个值在原数组中出现的次数数组
for y in nums_copy:
temp.append(nums.count(y))
print(temp)
# 比较得到出现次数最多的次数值下标
a = 0
max = 0
for index in range(len(temp)):
if temp[index] > max:
max = temp[index]
a = index
print(max, a)
print(nums_copy[a]) #因temp 与 nums_copy一一对应,可通过temp中最大值的下标找到nums_copy中对应下标的值
结果: