列表就像一个数组,但是里面放的元素类型可以有很多种
menber=[1,'爱我中华','love',['这里还可以放','一个']]
向列表里面添加
append()
member=['小明',"喜欢","唱"]
member.append('跳')
for each in member:
print(each,end=' ')
输出:小明 喜欢 唱 跳
member=['小明',"喜欢","唱"]
member.append('跳','rap')
for each in member:
print(each,end=' ')
这里报错说append()只能放一个而这里却给了两个,所以要报错
append()里面只能放一个参数
如果我就想放两个及以上呢?那就需要extend()了
extend()
member=['小明',"喜欢","唱"]
member.extend('跳','rap')
for each in member:
print(each,end=' ')
输出:其实这样的写法是不对的,extend的意思是扩展,这里应该是用一个列表去扩展另一个列表
member=['小明',"喜欢","唱"]
member.extend(['跳','rap'])
for each in member:
print(each,end=' ')
输出:小明 喜欢 唱 跳 rap
列表长度
len()
语法:
len(列表名)
member=['小明',"喜欢","唱"]
print(len(member))
输出:3
在指定位置插入元素
insert(指定位置,插入元素)
member=['小明',"喜欢","唱"]
member.insert(0,'这个')
for each in member:
print(each,end=' ')
输出:这个 小明 喜欢 唱
列表索引值从0开始
交换列表元素
member=['小明',"喜欢","唱","跳"]
temp=member[2]
member[2]=member[3]
member[3]=temp
for i in member:
print(i,end=" ")
输出:小明 喜欢 跳 唱
从列表里删除元素
remove()
member=['小明',"喜欢","唱","跳"]
member.remove('跳')
for i in member:
print(i,end=" ")
输出:小明 喜欢 唱
member=['小明',"喜欢","唱","跳"]
member.remove('rap')
for i in member:
print(i,end=" ")
结果:
del
member=['小明',"喜欢","唱","跳"]
del member[2]
for i in member:
print(i,end=" ")
输出:小明 喜欢 跳
pop
python的列表实际上是利用栈这种数据结构存储,所以可以利用pop来删除
member=['小明',"喜欢","唱","跳"]
it=member.pop()
print(it)
for i in member:
print(i,end=" ")
结果:
跳
小明 喜欢 唱
pop()会返回并删除栈顶元素
member=['小明',"喜欢","唱","跳"]
it=member.pop(1)
print(it)
for i in member:
print(i,end=" ")
结果:
喜欢
小明 唱 跳
pop还可以指定删除
列表分片
member=['小明',"喜欢","唱","跳",'rap','篮球']
print(member[1:3])
for i in member:
print(i,end=" ")
输出:
['喜欢', '唱']
小明 喜欢 唱 跳 rap 篮球
这里分片从1开始到2结束,不包括3,这是一个拷贝,不会影响原列表
其他用法:
member=['小明',"喜欢","唱","跳",'rap','篮球']
print(member[:3])
print(member[3:])
print(member[:])
输出:
['小明', '喜欢', '唱']
['跳', 'rap', '篮球']
['小明', '喜欢', '唱', '跳', 'rap', '篮球']
列表的常用操作符
比较操作符
list1=[123]
list2=[456]
print(list1>list2)
输出:False
list1=[123,456]
list2=[456,123]
print(list1>list2)
输出:False
列表只会比较第一个元素,然后返回
逻辑操作符
list1=[123,456]
list2=[456,123]
list3=[123,456]
print((list1<list2) and (list1==list3))
输出:True
连接操作符
list1=[123,456]
list2=[456,123]
list3=[123,456]
list4=list1+list2
for i in list4:
print(i,end=" ")
输出:123 456 456 123
不可以这样写:
list4=list1+"小明"
这样写会报错,拼接是同样的类型,列表可以和列表拼接,但是不能列表和字符或者数字直接拼接
重复操作符
list1=[123,456]
list1*=3
for i in list1:
print(i,end=" ")
输出:
123 456 123 456 123 456
成员关系操作符
list1=[123,456]
print(123 in list1)
print(789 in list1)
print(789 not in list1)
输出:
True
False
True
如果在列表里面还有一个列表
list2=[123,[111,"哈哈哈"],456]
print(111 in list2)
输出:False
这样只能访问到第一层,第二层没有访问到
如果想要访问到第二层里面的元素怎么办呢?
list2=[123,[111,"哈哈哈"],456]
print("哈哈哈" in list2[1])
输出True
对于list2这样的列表,想要访问到列表里面的列表,可以用二维数组的方式
list2=[123,[111,"哈哈哈"],456]
print(list2[1][1])
输出:哈哈哈
列表类型的内置函数
print(dir(list))
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__','__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
count
计算元素在列表中出现的次数
list1=[123,456]
list1*=5
print(list1.count(123))
输出:5
index
会返回参数在列表中的位置
list1=[11,21,34,56,65,34,45]
print(list1.index(34))
print(list1.index(34,3,6))
输出:
2
5
reverse
逆转
list1=[11,21,34,56,65,34,45]
list1.reverse()
for i in list1:
print(i,end=" ")
输出:45 34 65 56 34 21 11
sort
排序
list1=[11,21,34,56,65,34,45]
list1.sort()
for i in list1:
print(i,end=" ")
输出:11 21 34 34 45 56 65
sort()默认从小到大排序
如果想要从大到小排序
list1=[11,21,34,56,65,34,45]
list1.sort(reverse=True)
for i in list1:
print(i,end=" ")
输出:65 56 45 34 34 21 11
列表分片拷贝和等于的区别
list1=[6,5,4,3,2,1]
list2=list1[:]
list3=list1
上面的list1,list2,list3内容都是一样的,但是list2和list3的指向是不同的
list1=[6,5,4,3,2,1]
list2=list1[:]
list3=list1
list1.sort()
list1:1 2 3 4 5 6
list2:6 5 4 3 2 1
list3:1 2 3 4 5 6
可以看见,虽然只改了list1,但是list3也发生了改变,而list2没变,这是因为
list2=list1[:]是list2从list1那里拷贝出来的一份新的列表,list1和2是不同的,而list3是直接指向了list1,list1和list3是同一个列表