一、列表的创建
示例:
1 # 列表中的元素可以是任意数据类型 2 li = [1, 2, 3, 4, '张三', '李四'] 3 print(li) 4 li1 = [] # 空列表 用于存放数据 5 # list() 中必须是可迭代对象 6 li2 = list('123456789') # 等价于['1','2','3','4','5','6','7','8','9']
二、列表常用操作
1.访问列表中的值
1)根据索引访问
1 name_list = ['张三', '李四', '王五', '赵六'] 2 print(name_list[0]) 3 print(name_list[1]) 4 print(name_list[2])
2)根据切片访问
1 # listname[start:end:step] 2 # 切片范围左闭右开 3 # 起始值默认为0 4 # 步长默认为1 5 li = list(range(1, 11, 1)) 6 print(li) 7 # 拿到所有偶数 8 print(li[1::2]) 9 # 拿到大于5的数 10 print(li[5:])
3)index()返回指定数据所在位置的下标
1 li = list(range(1, 11, 1)) 2 # 元素为5的索引值,不存在时报错 3 print(li.index(5))
4)count()统计指定数据在列表中出现的次数
1 li = list(range(1, 11, 1)) 2 print(li.count(1))
5)len()访问列表长度
1 # len函数的核心实现就是通过循环实现的 2 li_adc = [1, 23, 34, 45, 767, 143, 13, 12, 4, 5, 76, 8, 9, 0, 12, 3, 123, 123, 13, 124, 123, 12, 124, 12, 3, 124, 1, 3, 3 12, 4, 65, 7, 586, 79, 6, 9, 6, 67, ] 4 print(len(li_adc))
1 # 成员运算符:in not in 2 # 逻辑运算符:and or not 3 name_list = ['张三', '李四', '王五', '赵六'] 4 name = input('请输入您要搜索的名字:') 5 if name in name_list: 6 print(f'您输入的名字是{name},名字已经存在') 7 else: 8 print(f'您输入的名字是{name},名字不存在')
2.列表添加元素
1)append()用于在列表的末尾追加元素
1 name_list = ['张三', '李四', '王五', '赵六'] 2 print(name_list) 3 name_list.append('阿坤') 4 print(name_list)
2)extend()扩展列表
3)insert()在指定位置新增数据
1 name_list = ['张三', '李四', '王五', '赵六'] 2 alist = ['唱', '跳', 'rap', '篮球'] 3 name_list.append(alist) # 添加 4 print(name_list) 5 name_list.extend(alist) # 拓展 6 print(name_list) 7 name_list.insert(2, '123456') # 指定位置新增数据 8 print(name_list)
3.删除列表元素
1)del
1 name_list = ['张三', '李四', '王五', '赵六'] 2 print(name_list) 3 del name_list # 此列表已经被删除 4 print(name_list) # NameError: name 'name_list' is not defined
name_list 删除,打印会报错
1 name_list = ['张三', '李四', '王五', '赵六'] 2 del name_list[3] 3 del name_list[4] # IndexError: list assignment index out of range 4 print(name_list)
name_list 索引4超范围,报错
2)clear()清空列表
1 name_list = ['张三', '李四', '王五', '赵六'] 2 name_list.clear() 3 print(name_list) # 空列表
3)pop()删除指定下标的元素,默认删除最后一个
1 name_list = ['张三', '李四', '王五', '赵六'] 2 name_list.pop() 3 name_list.pop(2) 4 name_list.pop(4) # IndexError: pop index out of range 5 print(name_list)
索引超范围,报错
4)remove()删除指定元素
1 name_list = ['张三', '李四', '王五', '赵六'] 2 name_list.remove('罗翔') # ValueError: list.remove(x): x not in list 3 print(name_list)
指定元素不存在列表中,报错
4.修改列表元素
1)根据索引修改
1 # 1 拿到六这个元素 2 # 2 对这个元素进行重新赋值 3 li = [1, 2, 3, 4, 5, '六', 7, 8, 9] 4 print(li[5]) 5 i = li.index('六') # 获取“六”的索引 6 li[i] = 6 7 print(li)
2)使用切片修改
1 # 不是一一对应 2 li = [1, 2, 3, 4, 5, '六', 7, 8, 9] 3 li[0:3] = ['a', 'b'] 4 li[0:3] = ['a', 'b', 'c'] 5 li[0:3] = ['a', 'b', 'c', 'd'] 6 print(li)
注:切片修改替换的是指定片段,被替换数量和新元素数量并不严格要求一致
3)reverse()逆置
1 num_list = [1, 5, 2, 3, 6, 8] 2 num_list.reverse() 3 print(num_list)
4)sort(reverse=False)排序
1 num_list = [1, 5, 2, 3, 6, 8] 2 num_list.sort(reverse=False) # 从小到大 升序 默认 3 print(num_list) 4 5 num_list.sort(reverse=True) # 从大到小 降序 6 print(num_list) 7 8 # 必须同类型数据才能排序 9 li = [1, 2, 3, 4, 5, '六', 7, 8, 9] 10 li.sort(reverse=True) # TypeError: '<' not supported between instances of 'str' and 'int' 11 print(li)
5.列表的复制
1)copy()复制一个列表 浅复制
1 name_list = ['张三', '李四', '王五', '赵六'] 2 name_list2 = name_list.copy() 3 print(name_list, id(name_list)) 4 print(name_list2, id(name_list2)) # 内存改变
6.列表的循环遍历
1 name_list = ['张三', '李四', '王五', '赵六'] 2 # for 3 for i in name_list: # i指的是值 4 print(i) 5 6 # while 7 i = 0 8 while i < len(name_list): 9 print(name_list[i]) 10 i += 1
7.列表的嵌套
1 name_list = [ 2 ['张三', '李四', '阿坤'], 3 ['唱', '跳', '篮球'], 4 ['甲', '乙', '丙'] 5 ] 6 7 # 找到甲 8 print(name_list[2][0]) 9 print(name_list[-1][0])
三、可变数据类型与不可变数据类型
可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称为可变数据类型
不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也发生改变,对于这种数据类型,就称为不可变数据类型
1 b = 'a' 2 print(b, id(b)) 3 b = b.upper() 4 print(b, id(b)) 5 # 列表 6 li = [1, 2, 3, 4, 5] 7 print(li, id(li)) 8 li.append(6) 9 print(li, id(li)) 10 11 # 可变数据类型:列表 12 # 不可变数据类型:字符串 数值 13 # 当修改某个东西时 内存不会改变 说明这个东西是可变的 可变的数据类型 14 # 当修改某个东西时 内存会改变 说明这个东西是不可变不能够进行修改 不可变的数据类型
标签:name,Python,数据类型,list,列表,print,li,元组 From: https://www.cnblogs.com/JayHan/p/17189606.html