有序且可变的容器,可以存放多个不同类型的元素
列表就是专门用来记录多个同种属性的值
列表:存储同一个类别的数据,方便操作
name = "xiaochaun" data = name.upper() print(name) print(data) xiaochaun XIAOCHAUN
列表,可变类型:即:创建好之后内部元素可以修改。
【功能基本上都是直接操作列表内部,不会创建一份新的数据】
user_list = ['车子','房子'] user_list.append("票子") print(user_list) ['车子', '房子', '票子']
列表的创建
列表名 = [] 例:list01 = []
li = [2,3,4,6,8,9,10]
1.append:添加一个数据,添加到列表的最后一位 语法:列表名.append("内容") li.append("小川") print(li) 2.insert:添加一个数据,到指定的位置 语法:列表名.insert(下标位置,内容) li.insert(0,"乃荣") print(li) 3.extend:添加一个序列类型,到最后一位,并且把序列类型拆分 语法:列表名.extend(序列类型) # 会拆分追加进去 li.extend("大力") print(li) # 如果用一个中括号括起来的追加进去就不会拆分 li.extend(['大力']) print(li)
1.pop:删除一个值,默认从最后一个开始删,也可以指定位置 语法: 列表名.pop() 列表名.pop(下标) li.pop(-1) print(li) li.pop() print(li) 2.remove:删除一个指定的值,如有多个,就从第一个开始删 语法:列表名.remove(删除对象) li.remove(3) print(li) 3.clear:清空列表里面的所有数据 语法:列表名.clear() li.clear() print(li) 4.del 全局删除,可以删除一个变量 语法: del 列表名 del 列表名[下标] del li[3] print(li)
1.单个修改:直接通过下标进行修改 语法:列表名[下标] = 内容 li[1] = "张三" print(li) 2.多个修改:通过切片方式进行修改 左闭右开 语法:列表名[起点:终点] = 数据1,数据2... li[1:3] = 70,20 print(li)
1.index:根据内容获取指定数据的下标 语法: 列表名.index(要找的内容) 列表名.index(要找的内容,起点值) print(li.index(8)) print(li.index(8,5))# 搜索值为8的数据,从下标5的位置开始往后搜索,没有就会报错,显示不在列表中 2.count:统计数据出现的次数 语法:列表名.count(要找的内容) print(li.count(70))
排序(全int的列表才可以排序) sort是在原列表上修改 sorted是返回一个新的列表 sort:让列表的内容按照顺序的方式来排列 语法: 列表名.sort()——》升序 列表名.sort(reverse = True)——》降序 li = [2,3,400,68,38,9,10] li.sort() print(li) li.sort(reverse=True) print(li) [2, 3, 9, 10, 38, 68, 400] [400, 68, 38, 10, 9, 3, 2] li1 = sorted(li) # 生成了一个新列表 print(li1)
生成一到十的列表
普通方式: li = [1,2,3,4,5,6,7,8,9,10] print(li) 使用range(1,11) print(list(range(1,11))) 普通的列表生成式 普通的for循环创建列表 li = [] for i in range(1,11): li.append(i) print(li) 列表生成式生成 print([i for i in range(1,10)])
[1x1,2x2,3x3,…9x9]
li = [] for i in range(1,10): li.append(i*i) print(li) 列表生成式 print([i*i for i in range(1,10)])
可以写出非常简洁的代码,但是并不倡导大家平时开发去写这种东西,因为可读性不高,bug不好修改,建议在非常简单的情况下可以选择偷懒用列表生成式,而带if和多重for循环最好不要使用
[1*2,2*3,3*4...9*10] print([i*(i+1) for i in range(1,10)])
1.相加,两个元组相加获取生成一个新元组 2.相乘,元组*整形,将元组中的元素再创建n份并生成一个新的元组 3.获取长度 4.索引 5.切片 6.步长,隔多少取值 7.for循环
不可变,只有查询方法,并且跟列表的用法一模一样
如果元素数量是固定的,建议使用元组,因为占用空间更小
元组通常是使用一对小括号将所有的元素包围起来的,但是小括号不是必须的,只要将各元素用逗号隔开就可以,python就会将其视为元组
# 定义一个元组 t = "python","jc" print(t)
1.count() 用于统计某个元素在元组中出现的次数 t = (123,"Google","JD","Taobao",123) print(t.count(123)) print(t.count("JD")) 2 1 2.index():找到数据的下标值 从某个指定下标开始查询某个元素的下标值 t = (123,"Google","JD","Taobao",123) print(t.index(123)) # 0 print(t.index(123,2)) # 4
1.相加,两个元组相加获取生成一个新元组 data = ("张三","李四")+("王五","赵六") print(data) # ('张三', '李四', '王五', '赵六') 2.相乘,元组*整形,将元组中的元素再创建n份并生成一个新的元组 data = ("张三","李四")*2 print(data) 3.获取长度 t = ('张三', '李四', '王五') print(len(t)) # 3 4.索引 t = ('张三', '李四', '王五') print(t[0]) 5.切片 t = ('张三', '李四', '王五', '赵六') print(t[0:3]) # ('张三', '李四', '王五') print(t[1:]) #('李四', '王五', '赵六') 6.步长,隔多少取值 t = ('张三', '李四', '王五', '赵六','赵本山') print(t[1:4:2]) # ('李四', '赵六') print(t[0::2]) # 从0开始到所有 隔2取 ('张三', '王五', '赵本山') 7.for循环 t = ('张三', '李四', '王五', '赵六','赵本山') for i in t: print(i) t = ('张三', '李四', '王五', '赵六','赵本山') for i in t: if i == '王五': continue print(i)
目前只有str,list,tuple可以被for循环
元组本身不可以改变,但是如果元组中还包含其他可变元素,这些可变元素即可改变
t = (99,88,77,['jc','18'],33) t[3][0] = 'xf' print(t)