1,list,列表列表使用中括号[]表示,内可盛放各种数据类型如  1(整形),'abc'(字符串)等等Ⅰ.列表的增1、append()append是在列表最后面添加元素li
1,list,列表
列表使用中括号[]表示,内可盛放各种数据类型如  1(整形),'abc'(字符串)等等
Ⅰ.列表的增
1、append()
append是在列表最后面添加元素
lis = ['a', 'b', 'c', 'd', 'e']
lis.append('f')
print(lis)
['a', 'b', 'c', 'd', 'e', 'f']
2、insert()
在指定索引处插入新元素
insert(索引,新元素)
lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(0,'A')
print(lis)
['A', 'a', 'b', 'c', 'd', 'e']
如果索引超出列表上界或下届,则在开头或结尾添加
lis = ['a', 'b', 'c', 'd', 'e']
lis.insert(8,'A')
print(lis)
['a', 'b', 'c', 'd', 'e', 'A']
3、extend()
将可迭代对象添加进列表里
extend(可迭代对象)
s1 = 'fgh'
lis = ['a', 'b', 'c', 'd', 'e']
lis.extend(s1)
print(lis)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
 
列表之间可以通过'+'连接,单个列表可以通过'*'复制
lis = ['a', 'b', 'c', 'd', 'e']
lis2 = ['f', 'g', 'h']
lis3 = lis + lis2
print(lis3)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
s1 = ['a']
s2 = s1 * 5
print(s2)
['a', 'a', 'a', 'a', 'a']
Ⅱ.列表的删
1、remove
remove按元素从左向右查找并删除找到的第一个元素
lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('c')
print(lis)
['a', 'b', 'c', 'b', 'a']
如果remove的元素不在列表里,则会报错
lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.remove('x')
print(lis)
ValueError: list.remove(x): x not in list
2、pop
pop是按照索引弹出某个元素,默认为最后一个元素,又返回值,就是弹出的那个元素
lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop()
print(s)
print(lis)
a
['a', 'b', 'c', 'c', 'b']
lis = ['a', 'b', 'c', 'c', 'b', 'a']
s = lis.pop(2)
print(s)
print(lis)
c
['a', 'b', 'c', 'b', 'a']
3、clear
清空列表
lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis.clear()
print(lis)
[]
4、del
del的第一个用法是所有数据类型都有的,例如 del list1,就是在内存中删除list1这个变量
lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis
print(lis)
NameError: name 'lis' is not defined
在操作列表时,del可以通过切片的方式来删除列表中某些元素
lis = ['a', 'b', 'c', 'c', 'b', 'a']
del lis[0:3]
print(lis)
['c', 'b', 'a']
Ⅲ.列表的改
1、通过索引修改
lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0] = 'A'
print(lis)
['A', 'b', 'c', 'c', 'b', 'a']
2、迭代修改一个索引范围的元素
lis = ['a', 'b', 'c', 'c', 'b', 'a']
lis[0:3] = 'ABCDE'
print(lis)
['A', 'B', 'C', 'D', 'E', 'c', 'b', 'a']
Ⅳ.列表的查
1、通过索引查找一个元素
lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis[2])
c
2、通过元素找索引  index
index(value,[start,[stop]]) 可切片寻找
lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('a'))
print(lis.index('a',1)
0
5
找不到会报错
lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.index('d'))
ValueError: 'd' is not in list
Ⅴ.列表的其他操作
1、reverse
对列表进行反转,没有返回值
lis = ['a', 'b', 'c']
lis.reverse()
print(lis)
['c', 'b', 'a']
2、sort
sort(key=None,reverse=False)
对列表进行排序,就地修改,默认升序
reverse默认为False,当reverse为True时反转变为降序
通过key进行自定义排序方式
lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort()
print(lis)
['a', 'b', 'c', 'e', 'f', 'g', 's']
lis = ['a', 'g', 'e', 'c' , 's', 'f', 'b']
lis.sort(reverse=True)
print(lis)
['s', 'g', 'f', 'e', 'c', 'b', 'a']
3、count
计数,统计某个元素在列表中出现的次数
lis = ['a', 'b', 'c', 'c', 'b', 'a']
print(lis.count('a'))
2
4、join
使用前提:列表中的元素全是字符串类型
用法:  str.join(list)
lis = ['a', 'b', 'c', 'c', 'b', 'a']
print('_'.join(lis))
a_b_c_c_b_a
2,tuple,元组
由于元组不可修改,所以只有查一个用法
用法与列表的查一致
 
但值得注意的是,如果元素里嵌套一个可更改的类型如列表,虽然元组不可变,但是里面嵌套的列表是可以改变的
tu = ('a', 's', ['a','b','c'], 'f')
tu[2].append('d')
print(tu)
('a', 's', ['a', 'b', 'c', 'd'], 'f')
原因是:元组不可改指的是元组元素的内存地址不可以改变,例如,假如上述元组元素'a'在内存中的地址是123456,而元素列表的内存地址是654321,修改列表是修改了内存地址654321内的数据,而不是修改了这个元素指向的地址,但是要修改一个元素如令tu[0] = 'c',是将元组的第一个元素地址指向了新的地址(字符串'c'在内存中的地址假设111111),改变了原有指向123456,是错误的