1.什么时候用列表:需要用一个变量去同时保存多个数据
2.什么是列表(list)
列表是python内置的容器型数据类型(序列),可变(说明支持增删改)并且有序(支持下标操作)
用中括号[]将多个元素括起来,多个元素之间逗号隔开:[元素1,元素2,元素3...]
3.列表中的元素:python内置的数据类型对应的数据,或者是程序员自定义类型的数据都可以 不同元素的类型可以不一样
注意:赋值语句运算表达式不能做为列表元素!其他的都可以。
list = [1,2,3,4]
print(list)
4.查 - 获取列表元素
获取单个元素:列表[下标]
names = ['张三','李四','王二','赵一']
print(names[2])
获取部分元素-切片(和字符串一样):列表[开始下标:结束下标:步长]
列表切片结果是列表
print(names[1:4])
print(names[:])
遍历
a.直接遍历
for 变量 in 列表: # 变量取到的是元素
循环体
b.通过下标遍历
for 变量 in range(len(列表)): # 变量取到的是下标
循环体
for item in names:
print(item)
for index in range(len(names)):
print(index,names[index])
scores = [90,80,70,100,76,57,54]
sum2 = 0
sum1 = 0
for item in scores:
if item <= 60:
sum2 += 1
sum1 += item
print('平均分:%.1f 不及格人数:%d' % (sum1/len(scores),sum2))
补充: 求和函数 sum
sum(序列) - 求序列中所有元素的和;序列要求元素类型一致,并且元素支持求和运算
print(sum(scores),sum(range(101)))
练习:输入一个数字,将其添加到一个有序列表中,要求添加进去后不改变从小大大或者从大到小的顺序
lists = [1,14,26,78,100]
item = int(input('输入一个数字:'))
index = 0
for list in lists:
if item >= list:
index+=1
lists.insert(index,item)
print(lists)
方法二:
for list in range(len(lists)):
if lists[list] > item:
lists.insert(index,item)
break
else:
lists.append(item)
print(lists)
6.删 - 删除元素
1, del 列表[下标] - 将指定列表中指定下标对应的元素删除
numbers = [1,2,3,4,5]
del numbers[2]
print(numbers)
2. 列表.remove(元素) - 将指定列表中第一个指定元素删除
注意: 如果指定删除元素不在,会报错
numbers = [1,2,3,4,5]
numbers.remove(3)
print(numbers)
3,
列表.pop() - 移除列表中最后一个元素,返回被移除的元素
列表.pop(下标) - 移除列表中指定下标对应的元素,返回被移除的元素
numbers = [1,2,3,4,5]
del_number=numbers.pop() # 移除最后一个元素
print(numbers,del_number)
numbers = [1,2,3,4,5]
del_number=numbers.pop(1) # 移除列表中下标为1 的元素
print(numbers)
4.清空: 列表.clear() - 删除列表中所有的元素
numbers.clear()
print(numbers)
7.改 - 修改列表中的元素
列表[下标] = 新的值 - 将列表中制定下表对应的元素改成新的值
nums = [1,2,3]
nums[0] = 100
print(nums)
8. in / not in
元素 in 列表 -- 判断列表中是否包含指定的元素
print([1] in [1,2,3,4,[1]]) # True
print([1] in [1,2,3,4]) # False
l列表运算
a. 数学运算支持: +,*
列表1 + 列表2 - 将两个列表中的元素合并产生一个新的列表(原列表不会发生改变)
列表*N - 列表中的元素重复 N 次,产生新的列表
new_list = [1,2] + ['name','age']
print(new_list)
print(new_list*3)
b.比较运算: == ,!=
list1 = [1,2]
print([1,2] == [2,1]) # False
print([1,2] != [2,1]) # True
print([1,2] == list1) # True
,<,>=,<= 只支持相同位置上元素类型相同的两个元素大小
print([1,2,3] > [100,2])
2.相关方法
len(列表)、 sum(列表) - 要求列表中的元素必须是数字 、 max(列表)、min(列表)
list(数据) - 将指定数据转换成列表,所有的序列可以转换成列表,比如:字符串,列表,字典,集合,元祖,range,迭代器
转换的时候是将序列中的元素作为列表元素
print(list('1234'))
3.相关方法
a.列表.count(元素) - 统计指定元素在列表中的个数
print([1,2,3,1,1].count(1))
b.列表.extend(序列) - 将序列中的元素添加到列表中
list1 = []
list1.extend('123')
print(list1)
list1.extend(range(3))
print(list1)
c.列表.index(元素) - 获取指定元素在列表中的下标,如果指定元素有多个,支取第一个。 如果指定元素不存在则报错
list2 = [1, 0, 1, 2,'张飞','刘备','关羽']
print(list2.index('张飞'))
d.列表.reverse() - 将列表中的元素倒序,不会产生新列表
list2.reverse()
print(list2)
补充:内置函数:reversed(序列) - 将序列中的元素倒序产生一个新的迭代器,原序列不会修改
list1 = [1,2,3]
result = reversed(list1) # 产生的结果为 迭代器
list1 = list(result)
print(list1)
e.列表.sort() - 对列表中的元素从小到大排序(列表中的元素类型一致并且支持比较运算)
scores = [2,34,3,4,5,23,54,52]
scores.sort()
print(scores)
scores.sort(reverse = True)
print(scores)
f.列表.copy() - 产生一个新列表,列表中的元素和前列表一样,相当于: 列表[:]
list1 = [1,2,3]
list3 = list1
list2 = list1.copy()
print(list3,list2)
list1.append(10)
print(list3,list2) # [1, 2, 3, 10] [1, 2, 3]