1.特点
(1) 由一系列特有顺序的元素组成(一个元素:就是容器中的一个内容)
(2) 列表可以存储任意类型的数据
2.定义列表
names = [] # 定义一个空列表 grades = [90, 99, 54, 76, 50, 34, 60, 88] # 定义列表,并且给他赋初始值 names_grades = ['hanbo', 'wangyan', True, 100, 90] # 列表中元素的类型可以不一样 注意:在语法上可以存储多种类型的数据,一般在使用过程中都是存储相同的数据类型 numbers = [value for value in range(1, 20)] #创建范围内的列表 print(numbers) numbers1 = [value + 10 for value in range(1, 20)] # 快速的创建范围内的数值 print(numbers1)
3.使用列表中的元素
(1) 使用索引(下标)去获取列表中的元素
格式: 列表名[索引] #下标的取值范围 = 0 ~ (列表的长度 - 1)
grades = [90, 99, 54, 76, 50, 34, 60, 88] print(grades[0]) print(grades[1]) print(grades[7]) print(grades[8]) # 注意:下标值不能超出范围,超出范围结果会报错.
例如: names_grades = ['hanbo', 'wangyan', True, 100, 90] print(names_grades[0]) print(names_grades[1]) print(names_grades[2]) print(names_grades[3]) print(names_grades[4])
(2)索引(下标)值可以取负数
格式: 列表名[-索引] #取到的数是第几个元素, 下标是几取的就是倒数第几
grades = [90, 99, 54, 76, 50, 34, 60, 88] print(grades[-1]) print(grades[-2]) print(grades[-3]) print(grades[-9]) # 注意索引(下标)同样不能越界
(3)通过for循环遍历列表
grades1 = [90, 99, 54, 76, 50, 34, 60, 88] for i in range(0, len(grades1)): # 通过for循环取下标值 print(grades1[i]) for x in grades1: # 让x去获取列表grades1中的每一个元素 print(x)
练习1: 将一些朋友的姓名存储在一个列表中,并将其名字为names2.依次访问该列表中的每一个元素,从而将每个朋友的姓名都打印出来.并为每人打印一条问候语
names2 = ['hanbo', 'wangyan', 'xiaoming', 'huanghong'] for name in names2: print(name.title() + ': 你好,吃饭了吗:') print('吃了')
4.元素的修改,增加和删除操作(增删改插)
(1).修改元素
numbers = [1, 2, 3, 4, 5, 6] numbers[0] = 10 # 通过索引拿到需要修改的元素,然后重新赋值 print(numbers)
练习2:使用列表存储学生的成绩,保证其中有多个55-59分的成绩,然后将其中在55-59之间的成绩改为60分.
grades = [34, 60, 77, 89, 90, 55, 56, 57,100, 58, 59] for x in range(0, len(grades)): if 55 <= grades[x] <= 59: grades[x] = 60 print(grades)
(2).增加\添加元素
a. append(元素):在列表的末尾添加一个元素
grades = [34, 60, 77, 89, 90, 55, 56, 57,100, 58, 59] grades.append(99) grades.append(99) #添加相同元素,不会覆盖 print(grades)
b. insert(索引,元素):在指定的索引前插入一个元素
grades = [34, 60, 77, 89, 90, 55, 56, 57,100, 58, 59] grades.insert(1, 100) print(grades) grades.insert(11, 100) #在python2里面索引不能越界,在python3里面索引可以越界,正的索引越界是插入到列表的末尾的,负的索引越界是插入到列表的开头. print(grades) 总结: 插入的实质是: 插入到对应的索引值的前面
(3).删除
a. del 列表名[索引]: 删除执行的元素(通过索引去拿到的元素)
删除指定索引对应的元素,列表发生改变 colors = ['yellow', 'red', 'blue', 'black', 'orange'] del colors[0] del colors[5] #del对应的索引不能越界,否则报错 print(colors)
b. remove(元素值)
colors = ['yellow', 'red', 'blue', 'black', 'orange'] colors.remove('orange') print(colors) colors.remove(colors[3]) #通过下标删除元素 print(colors)
c.pop()函数.
pop():是将列表中的元素从列表中取出,取出的是列表中的最后一个元素,并且返回.
colors = ['yellow', 'red', 'blue', 'black', 'orange'] colors.pop() print(colors) print(colors.pop()) #取出列表中的最后一个元素
pop(索引):将列表中索引指定的元素取出
colors = ['yellow', 'red', 'blue', 'black', 'orange'] colors.pop(1) print(colors)
练习3:创建一个列表存储学生的成绩,将列表中成绩低于60分的成绩取出来,放入另外一个空的列表中.
grades = [33, 44, 55, 58, 63, 88, 99, 50] low_grades = [] num = 0 while num < len(grades): grade = grades[num] if grade < 60: low_grades.append(grades.pop(num)) num -= 1 num += 1 print(low_grades)
练习4:用一个列表存储班上同学的名字,其中一个人退学了,将他从列表中删除(用两种方法)
name = names[x] if name == 'fulei':# 方法一: names = ['wangming', 'fulei', 'wangdachui', 'xiaoming', 'dahua'] xs = [name for name in range(0, len(names))] for x in xs: name = names[x] if name == 'fulei': del names[x] del xs[-1] print(names) # 方法二: names.remove('fulei') #remove直接删除元素 print(names) # 总结:列表存储数据使用的是栈的结构:先进后出,后进先出
5.组织列表
(1) sort():对列表的元素进行升序排列(直接改变原列表的元素,返回值为None)
ages = [3, 9, 5, 4, 6, 8, 7] ages.sort() print(ages)
reverse: 将参数reverse设置为True, 就成为降序排列
ages = [3, 9, 5, 4, 6, 8, 7] ages.sort(reverse = True) print(ages)
(2) sorted() : 将列表中的元素升序排列,然后返回一个新的列表.(不会改变原列表的元素,返回一个升序排列的新列表)
ages1 = [3, 9, 5, 4, 6, 8, 7] new_ages1 = sorted(ages1) print(new_ages1)
同样可以用reverse进行降序排列
print(sorted(ages1, reverse = True))
(3) reverse() : 将列表中的元素进行反向排序(直接改变原来的列表)
ages3 = [3, 9, 5, 4, 6, 8, 7] ages3.reverse() print(ages3)
6.数值统计
(1) max(): 返回最大值
numbers = [1, 2, 6] print(max(numbers))
(2) min(): 返回最小值
numbers = [1, 2, 6] print(min(numbers))
(3) sum(): 返回列表中元素的和
numbers = [1, 2, 6] print(sum(numbers))
(4) import heapq模块(实现了一个堆的数据结构)
a. nlargest(n, 列表)找出列表中最大的n个数,以列表形式返回
import heapq numbers = [1, 2, 6] print(heapq.nlargest(2, numbers))
b. nsmallest(n, 列表)找出列表中最小的n个数,以列表形式返回
import heapq numbers = [1, 2, 6] print(heapq.nsmallest(2, numbers))
(5) count(): 统计列表某个元素的个数
list8 = [1, 2, 3, 4, 5, 6, 5, 5] count = list8.count(5) print(count)
(6) index(): 获取指定元素对应的索引(下标),如果列表中有多个相同的元素,返回第一个元素的下标
list8 = [1, 2, 3, 4, 5, 6, 5, 5] index = list8.index(3) print(index)
7.获取列表部分元素
(1). 切片
numbers = [8, 7, 6, 5, 4, 3, 2, 1] print(numbers[0:3]) #获取索引0~3(不包括3)对应的元素 print(numbers[:4]) #获取索引开始~4(不包括4)对应的元素 print(numbers[2:]) #获取索引2~最后的元素 print(numbers[:]) #获取列表所有元素 print(numbers[:-1]) #获取开始到-2索引的元素 print(numbers[-4:-2]) #获取倒数索引4~索引2(不包括-2)对应的元素
a. 如果冒号前面的数大于冒号后面的数,返回的是一个空列表
numbers = [8, 7, 6, 5, 4, 3, 2, 1] print(numbers[4:2]) print(numbers[-2:-4])
b. 如果冒号后面的数大于列表的长度,后面会取到列表的最后一个值
numbers = [8, 7, 6, 5, 4, 3, 2, 1] print(numbers[1:100])
(2). 用*号
numbers = ['hanbo', 1, 2, 3, 4, 5, 'man'] name,*scores = numbers print(name) print(scores) name,*scores,sex = numbers print(name) print(sex) print(scores)
8,列表的复制
(1) 通过切片获取索引复制元素(能复制)
list1 = [44, 55, 67, 80, 40, 59, 88, 99] temp_1 = list1[:] #总结:获取全部元素只能用切片 print(temp_1)
(2) copy(),赋值出一个新的列表并返回(能复制)
list1 = [44, 55, 67, 80, 40, 59, 88, 99] temp_2 = list1.copy() print(temp_2)
(3) 通过*变量名,只能获取部分元素(能获取部分)
list1 = [44, 55, 67, 80, 40, 59, 88, 99] *temp_2 = list1 print(list1, temp_2)
(4)通过变量重新赋值(不能复制原列表)
list1[0] = 100 list1 = [44, 55, 67, 80, 40, 59, 88, 99] temp = list1 list1[0] = 100 print(list1) print(temp)
9.列表的连接
numbers_1 = [1, 2, 3] numbers_2 = [4, 5, 6] print(numbers_1 + numbers_2) #通过+号可以直接将两个列表合并成一个新的列表
练习5: 已知一个列表,输出所有奇数下标元素
list3 = [1, 2, 3, 4, 5, 6, 7, 8] new_list3 = [] for q in range(0, len(list3)): if q % 2 != 0: new_list3.append(list3[q]) print(new_list3)
练习6: 已知一个列表,输出所有元素中,值为奇数的
list4 = [11, 13, 12, 15, 14, 10, 97, 99, 100] new_list4 = [] for x in range(0, len(list4)): if list4[x] % 2 != 0: new_list4.append(list4[x]) print(new_list4)
练习7: 已知一个列表,将所有元素乘二
list5 = [1, 5, 3, 4, 5, 6] new_list5 = [] for w in range(0, len(list5)): new_list5.append(list5[w]*2) print(new_list5)
练习8: 已知一个列表A,将奇数下标元素存到B列表中,偶数元素存到C列表中
list7 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_list7 = [] even_list7 = [] for r in range(0, len(list7)): if r % 2 == 0: odd_list7.append(list7[r]) else: even_list7.append(list7[r]) print(odd_list7) print(even_list7)
就是在列表里面放列表
# 例如 1-36 numbers = [ [1,2,3,4,5,6], [7,8,9,10,11,12], [13,14,15,16,17,18], [19,20,21,22,23,24], [25,26,27,28,29,30], [31,32,33,34,35,36] ] print(numbers[0][0]) >>>1 print(numbers[0][1]) >>>2 for list_1 in numbers: #遍历整个列表 for x in list_1: print(x) print(numbers)