数据类型----列表的内置方法
目录
一、定义
'''
中括号括起来,内部有多种元素,元素与元素之间用逗号隔开,元素可以是任意数据类型和嵌套
'''
# 定义
l1 = [1,'a',[1,2]] # 本质:l1 = list([1,'a',[1,2]])
二、类型转换
但凡能被for循环遍历的数据类型都可以传给list()转换成列表类型,除了整型和浮点型
# print(list(123)) 不可
# print(list(1.11)) 不可
# list()会跟for循环一样遍历出数据类型中包含的每一个元素然后放到列表中
print(list('hello')) # ['h', 'e', 'l', 'l', 'o']
print(list([11, 22, 33, 44])) # [11, 22, 33, 44]
print((list({'username': "kevin", "age": 20}))) # ['username', 'age']
print(list((11, 22, 33, 44))) # [11, 22, 33, 44]
print(list({11, 22, 33, 44})) # [33, 11, 44, 22]
三、使用
3.1 优先掌握的操作
3.1.1 按索引取值
# 1.按索引存取值(正向存取+反向存取):即可存也可以取
# 1.1 正向取(从左往右)
my_friends = ['tony', 'jason', 'tom', 4, 5]
print(my_friends[0]) # tony
print(my_friends[3]) # 4
# 1.2 反向取(负号表示从右往左)
print(my_friends[-1]) # 5
print(my_friends[-3]) # tom
print(my_friends[-5]) # tony
# 1.3 对于list来说,既可以按照索引取值,又可以按照索引修改指定位置的值,但如果索引不存在则报错
my_friends[1] = 'martthow'
print(my_friends) # ['tony', 'martthow', 'tom', 4, 5]
3.1.2 []切片
# 2.切片(顾头不顾尾,步长)
# 2.1 顾头不顾尾:取出索引为0到3的元素
print(my_friends[0:4]) # ['tony', 'jason', 'tom', 4]
# 2.2 步长:0:4:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2的元素
print(my_friends[0:4:2]) # ['tony', 'tom']
3.1.3 长度len
# 3.长度len -> length
print(len(my_friends)) # 5
3.1.4 成员运算 in 和 not in
# 4.成员运算in和not in
# 成员运算是判断元素是否在列表中
print('tony' in my_friends) # True
print('t' in my_friends) # False
print('xx' in my_friends) # False
3.2 增删改查
3.2.1 增加
append:默认追加到末尾(不管是什么类型的数据,都会当成一个整体元素填进去)
insert:在指定位置添加元素(索引位置,不管是什么类型的数据,都会当成一个整体元素填进去)
extend:合并两个列表
# 1.增加
my_friends = ['tony', 'jason', 'tom', 4, 5]
# 1.1 append()列表尾部追加元素
# 不能使用索引增加,会报错
# my_friends[5] = 666
my_friends.append(666)
# print(my_friends) # ['tony', 'jason', 'tom', 4, 5, 666]
my_friends.append(777)
print(my_friends) # ['tony', 'jason', 'tom', 4, 5, 666, 777]
# 1.2 insert:增加指定索引位置的值
my_friends.insert(0, 999)
print(my_friends) # [999, 'tony', 'jason', 'tom', 4, 5]
my_friends.insert(2, 'kevin')
print(my_friends) # [999, 'tony', 'kevin', 'jason', 'tom', 4, 5]
# 1.3 extend:合并两个列表
# append是把列表的整体添加到末尾
my_friends.append([11, 22, 33, 44])
print(my_friends) # ['tony', 'jason', 'tom', 4, 5, [11, 22, 33, 44]]
# 想要将第二个列表中的元素加到第一个列表中只能用,extend
my_friends.extend([11, 22, 33, 44])
print(my_friends) # ['tony', 'jason', 'tom', 4, 5, 11, 22, 33, 44]
l = ['kevin', 'jack', 'tom']
l1 = ['a', 'b', 'c', 'd']
l.extend(l1) # for循环+append
print(l)
# extend中只有一个参数,所以想要加第三个列表,只能是一个一个列表添加,不能一次性加两个,会报错
l = ['kevin', 'jack']
l1 = ['a', 'b']
l2 = [11, 22, 33, 44]
l.extend(l1)
print(l) # ['kevin', 'jack', 'a', 'b']
l.extend(l2)
print(l) # ['kevin', 'jack', 'a', 'b', 11, 22, 33, 44]
3.2.2 删除
del l[0]:删除指定索引的值
remove():删除指定的元素,可不是索引
pop():弹出元素 (1. 把列表的元素删除 2. 把删除的元素又返回过来了)
# 2.删除
my_friends = ['tony', 'jason', 'tom', 4, 5]
# 2.1 del -> delete: 删除指定索引的值
# del 变量[索引]
del my_friends[0]
print(my_friends) # ['jason', 'tom', 4, 5]
del my_friends[2]
print(my_friends) # ['jason', 'tom', 5]
# 2.2 remove()
# 括号中直接写删除的元素,可不是索引,没有返回值
aa = my_friends.remove('jason')
print(aa) # None 空
print(my_friends) # ['tony', 'tom', 4, 5]
# 从左往右查找第一个需要删除的元素
l = [11, 22, 33, 22, 44]
l.remove(22)
print(l) # [11, 33, 22, 44]
# 2.3 pop():弹出元素
# 默认删除列表最后一个元素,并将删除的值返回,括号内可以通过加索引值来指定删除元素
my_friends.pop()
print(my_friends) # ['tony', 'jason', 'tom', 4]
aa = my_friends.pop()
print(aa) # 4
print(my_friends) # ['tony', 'jason', 'tom']
# 可以弹出指定索引的值
s = my_friends.pop(1)
print(s) # jason
print(my_friends) # ['tony', 'tom']
3.2.3 修改
# 3.修改
'''列表的最大索引长度:len(l)-1'''
print(my_friends[1]) # jason
# 1. 修改值:用索引来修改
my_friends[1] = 'jack'
print(my_friends) # ['tony', 'jack', 'tom', 4, 5]
3.2.4 查找
# 查找:用索引取值
print(my_friends[0]) # tony
print(my_friends[-1]) # 5
3.3 需要了解的操作
3.3.1 reverse()
# 1.reverse()颠倒列表内元素顺序
l1 = [11, 22, 33, 44]
# l1.reverse()
# print(l1) # [44, 33, 22, 11]
# 颠倒列表还可以使用:切片方式
print(l1[::-1]) # [44, 33, 22, 11]
3.3.2 sort()
# 2.sort()给列表内所有元素排序
l2 = [11, 22, 3, 42, 7, 55]
# 2.1 排序时列表元素之间必须是相同数据类型,不可混搭,否则报错
# 默认从小到大排序
l2.sort()
print(l2) # [3, 7, 11, 22, 42, 55]
# reverse用来指定是否跌倒排序,默认为False。reverse=True表示从大到小排序
l2.sort(reverse=True)
print(l2) # [55, 42, 22, 11, 7, 3]
# 2.2 了解知识
# 我们常用的数字类型直接比较大小,但其实,字符串、列表等都可以比较大小
# 原理相同:都是依次比较索引对应位置的元素的大小,如果分出大小,则无需比较下一个元素,比如
l1 = [666, 777]
l2 = [111, 222, 333, 444, 555, 666]
print(l2 > l1) # False
# 字符之间的大小取决于它们在ASCII表中的先后顺序,越往后越大
s1 = 'abc'
s2 = 'az'
print(s2 > s1) # True
# s1与s2的第一个字符没有分出胜负,但第二个字符'z'>'b',所以s2>s1成立
# 所以我们也可以对下面这个列表排序
l3 = ['A', 'z', 'adjk', 'hello', 'hea']
l3.sort()
print(l3) # ['A', 'adjk', 'hea', 'hello', 'z']
3.3.3 循环
# 循环遍历my_friends列表里面的值
my_friends=['tony','jason','tom',4,5]
for line in my_friends:
print(line)