python列表下可以包含多种不同的类型
MyList = [2, 5, 8, "呵呵", [1, 2, 3], {"a": 123, "b": "ddd"}, (2, 5, 0)]
一.向列表中添加元素
1.append() 只能一次添加一个元素,并且只能在列表最后添加
a = [2, 5, 8, "呵呵", [1, 2, 3], {"a": 123, "b": "ddd"}, (2, 5, 0)]
a.append("嘿嘿")
# 将列表中的中文以正确的格式打印
print str(a).decode('string_escape')
# 输出: [2, 5, 8, '呵呵', [1, 2, 3], {'a': 123, 'b': 'ddd'}, (2, 5, 0), '嘿嘿']
2.extend() 可以一次添加多个元素,只能添加在列表的最后,且有序
b = [1, 3, 9, 5]
c = [9, 6, 4]
b.extend(c)
print b
# 输出:[1, 3, 9, 5, 9, 6, 4]
3. insert() 在列表的指定索引位置添加元素
d = ["a", "b", "c"]
# 在索引号1的位置上添加d
d.insert(1, "d")
print d
# 输出:['a', 'd', 'b', 'c']
二.删除列表元素
1. remove()移除列表中的特点元素,只删除第一次遇到的该元素,若有多个元素,不能同时删除
a = ["a", "b", "c", "a"]
a.remove("a")
print a
# 输出: ['b', 'c', 'a']
a.remove("a")
print a
# 输出: ['b', 'c']
2. del m[n]删除列表中指定索引位置的元素,del是一种操作语句
b = ["a", "b", "c"]
del b[1]
print b
# 输出:['a', 'c']
3.pop() 将列表指定位置的元素返回,默认最后一个
c = ["a", "b", "c"]
h = c.pop()
print h
# 输出:c
print c
# 输出: ['a', 'b']
也可以指定位置
c = ["a", "b", "c"]
h = c.pop(0)
print h
# 输出:a
print c
# 输出: ['b', 'c']
三.查询指定位置元素
a = ["a", "b", "c"]
print a[1]
# 输出:b
四.分片
1.用一个冒号隔开两个索引值, 左边是开始位置, 右边是结束位置,返回的列表不包含结束位置上的元素
a = [0, 1, 2, 3, 4, 5, 6, 7]
print a[1:3]
# 输出:[1, 2]
# 冒号前为空,则从开始位置查找
print a[:3]
# 输出:[0, 1, 2]
# 冒号后为空,则直接查询到结束位置
print a[2:]
# 输出:[2, 3, 4, 5, 6, 7]
# 冒号前后均为空,则查找全部
print a[:]
# 输出:[0, 1, 2, 3, 4, 5, 6, 7]
# 利用负值进行访问,最后一个值的位置为-1,返回值不包含结束位置上的元素
a = [0, 1, 2, 3, 4, 5, 6, 7]
print a[-4:-2]
# 输出:[4, 5]
2.增加查找的步长
a = [0, 1, 2, 3, 4, 5, 6, 7]
# 从头开始,每两个步长查找一次
print a[::2]
# 输出:[0, 2, 4, 6]
步长为-1时,进行反转
a = [0, 1, 2, 3, 4, 5, 6, 7]
print a[::-1]
# 输出:[7, 6, 5, 4, 3, 2, 1, 0]
但只能对整个列表进行翻转
a = [0, 1, 2, 3, 4, 5, 6, 7]
print a[0:3:-1]
# 输出:[]
3.列表的复制,与copy方法相同,也叫深拷贝
a = [0, 1, 2, 3, 4, 5, 6, 7]
b = a[:]
print b
# 输出:[0, 1, 2, 3, 4, 5, 6, 7]
不要采取直接赋值的形式进行复制,对a的操作会影响到c,直接赋值也叫浅拷贝
a = [0, 1, 2, 3, 4, 5, 6, 7]
c = a
print c
a.pop()
print a
# 输出: [0, 1, 2, 3, 4, 5, 6]
print c
# 输出: [0, 1, 2, 3, 4, 5, 6]
五.列表的操作符操作
1."+":实现多个列表之间的拼接,且有序
a = [1, 2, 3]
b = [4, 5, 6]
print a + b
# 输出:[1, 2, 3, 4, 5, 6]
2."*":主要实现的是列表的复制和添加
a = [1, 2, 3]
print a*3
# 输出:[1, 2, 3, 1, 2, 3, 1, 2, 3]
六.列表常用函数
1.len():列表元素个数
a = [1, 2, 3]
print len(a)
# 输出: 3
2.max():返回列表元素最大值
a = [1, 2, 3]
print max(a)
# 输出: 3
3.min():返回列表元素最小值
a = [1, 2, 3]
print min(a)
# 输出: 1
4.list(seq):将元组转换为列表
a = (1, 2, 3)
print a
# 输出:(1, 2, 3)
b = list(a)
print b
# 输出:[1, 2, 3]
七.列表常用方法
1.list.count(obj):统计某个元素在列表中出现的次数
a = [1, 2, 3, 1, 2, 3, 1, 2, 3]
print a.count(1)
# 输出: 3
2.list.index(obj):从列表中找出某个值第一个匹配项的索引位置
a = [4, 5, 8, 7, 5]
print a.index(5)
# 输出: 1
3.list.reverse():反向列表中元素
a = [4, 5, 8, 7, 5]
a.reverse()
print a
# 输出: [5, 7, 8, 5, 4]
4.list.sort([func]):对原列表进行排序
4.1 默认升序
a = [4, 5, 8, 7, 5]
a.sort()
print a
# 输出: [4, 5, 5, 7, 8]
4.2 降序排序
a = [4, 5, 8, 7, 5]
a.sort(reverse=True)
print a
# 输出: [8, 7, 5, 5, 4]
4.3 指定第二个元素排序
# 获取列表的第二个元素
def second(elem):
return elem[1]
a = [[2, 2], [3, 4], [4, 1], [1, 3]]
a.sort(key=second)
print a
# 输出: [(4, 1), (2, 2), (1, 3), (3, 4)]
拉姆达表达式形式
a = [[2, 2], [3, 4], [4, 1], [1, 3]]
a.sort(key=lambda elem: elem[1])
print a
# 输出:[[4, 1], [2, 2], [1, 3], [3, 4]]
八.列表遍历
1 普通遍历,效率最高,在不需要下标的情况下,优先选择此种方式
a = ["b", "a", "d", "c"]
for i in a:
print i, a.index(i)
# 输出:
# b 0
# a 1
# d 2
# c 3
2 遍历循环下标的形式,range会直接将所有结果生成一个list对象
a = ["b", "a", "d", "c"]
for i in range(len(a)):
print i, a[i]
print a
# 输出:
# 0 b
# ['b', 'a', 'd', 'c']
# 1 a
# ['b', 'a', 'd', 'c']
# 2 d
# ['b', 'a', 'd', 'c']
# 3 c
# ['b', 'a', 'd', 'c']
3.遍历循环下标的形式,xrange不会直接生成一个list,而是一个生成器,会每次调用返回其中的一个值,因此,xrange的循环性能比range好,尤其是当列表返回很大的情况。但是需要返回是一个列表的话,可以使用range
a = ["b", "a", "d", "c"]
for i in xrange(len(a)):
print i, a[i]
print a
# 输出:
# ['b', 'a', 'd', 'c']
# 1 a
# ['b', 'a', 'd', 'c']
# 2 d
# ['b', 'a', 'd', 'c']
# 3 c
# ['b', 'a', 'd', 'c']
4.如需获取下标,优先选择此种方法
a = ["b", "a", "d", "c"]
for index, j in enumerate(a):
print index, j
print a
# 输出:
# ['b', 'a', 'd', 'c']
# 1 a
# ['b', 'a', 'd', 'c']
# 2 d
# ['b', 'a', 'd', 'c']
# 3 c
# ['b', 'a', 'd', 'c']
enumerate参数可以设置遍历起始序号,只是改变起始序号
a = ["b", "a", "d", "c"]
for index, i in enumerate(a, 2):
print index, " ", i
# 输出:
# 2 b
# 3 a
# 4 d
# 5 c