列表有些类似与数组
列表个元素通过逗号隔开,写在方块中
>>> a=["一",1]
>>> b=["二",2]
>>> ab=[a,b]
>>> ab
[['一', 1], ['二', 2]]
索引:元素位置
编号从零开始
>>> area='area'
>>> area[0]
'a'
从后往前索引用负数,最后一个元素位置是-1,不是-0,否则会和第一个元素重合
>>> area[-2]
'e'
字符串也可以直接索引
>>> 'string'[1]
't'
如果函数调用返回一个序列,那么可以直接对返回结果进行索引操作。如下
>>> second=input("area: ")[1]
area: fresh
>>> second
'r'
分片
利用分片操作访问一定范围内的元素
第一个边界不包含在访问的元素范围内,元素范围长度等于两个边界之差
>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature[0:3]
['蓝天', '白云', '绿树']
>>> nature[1:3]
['白云', '绿树']
>>> nature[3:]
['青草', '清澈的小河']
>>> nature[:3]
['蓝天', '白云', '绿树']
>>> nature[-2:]
['青草', '清澈的小河']
如果需要复制整个序列,可以将两个索引都置空
>>> nature[:]
['蓝天', '白云', '绿树', '青草', '清澈的小河']
步长:步长为n的分片包括的是从开始到结束每隔n-1个的元素
>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[0:10:3]
[1, 4, 7, 10]
>>> number[::3]
[1, 4, 7, 10]
如果步长是负数则分片从右向左提取元素
>>> number[::-2]
[10, 8, 6, 4, 2]
>>> number[3::-3]
[4, 1]
>>> number[:3:-3]
[10, 7]
序列相加:通过是用运算符进行序列的连接操作,列表和字符串不能连接在一起,可以将字符串放在列表里。
>>> [1,3,5]+['hello']
[1, 3, 5, 'hello']
>>> [1,3,5]+'hello'
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
[1,3,5]+'hello'
TypeError: can only concatenate list (not "str") to list
列表可以相加,也可以相乘
>>> [1,2]*3
[1, 2, 1, 2, 1, 2]
None空列表初始化
None是python的内建值,它的确切含意是“这里什么都没有”
>>> sequence=[None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]
成员资格
使用in运算符检查某个值是否在序列中
>>> space=['s','p','a','c','e']
>>> 'a'in space
True
>>> 'b' in space
False
内建函数len、min、max
len函数返回序列中所包含的元素数量,min函数和max函数返回序列中最小和最大的元素
>>> number=[1,3,5]
>>> len(number)
3
>>> min(number)
1
>>> max(number)
5
>>> max(2,6,1)
6
list函数
list函数适合所有序列,比如根据字符串创建列表,这样字符串就能像列表一样被修改了
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
基本的列表操作
1.改变列表,元素赋值
>>> a=[1,2,3]
>>> a[2]=0
>>> a
[1, 2, 0]
2.删除元素
>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> del nature[0]
>>> nature
['白云', '绿树', '青草', '清澈的小河']
3.分片赋值
>>> name = list('Kora')
>>> name
['K', 'o', 'r', 'a']
>>> name[1:]=list('erry')
>>> name
['K', 'e', 'r', 'r', 'y']
分片赋值语句也可以插入新的元素
>>> num=[1,5]
>>> num[1:1]=[2,3,4]
>>> num
[1, 2, 3, 4, 5]
插入新的元素只是“替换”了一个空的分片,也可以通过分片删除元素
>>> num=[1,2,3,4,5]
>>> num[1:4]=[]
>>> num
[1, 5]
列表方法
方法调用:对象.方法(参数)
1.append方法用于在列表末尾追加新的对象,只能添加一个新对象
>>> num=[1,2,3]
>>> num.append(4,5)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
num.append(4,5)
TypeError: append() takes exactly one argument (2 given)
>>> num.append(4)
>>> num
[1, 2, 3, 4]
2.extend
extend方法可以在列表的末尾一次性追加另一序列中的多个值
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
连接的操作会比extend方法效率低
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a=a+b
>>> a
[1, 2, 3, 4, 5, 6]
分片赋值也可以实现,但可读性不如extend方法
>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a[len(a):]=b
>>> a
[1, 2, 3, 4, 5, 6]
3.insert
insert方法用于将对象插入到列表中
>>> num=[1,2,3,4,5,7]
>>> num.insert(5,'six')
>>> num
[1, 2, 3, 4, 5, 'six', 7]
分片赋值可以实现,可读性不如insert
>>> num=[1,2,3,4,5,7]
>>> num[5:5]=['six']
>>> num
[1, 2, 3, 4, 5, 'six', 7]
4.count
count方法用于统计某个元素在列表中出现的次数
>>> num=[1,2,3,1]
>>> num.count(1)
2
5.index
index方法用于从列表中找出某个值第一个匹配项的索引位置
>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.index('蓝天')
0
>>> nature[0]
'蓝天
6.pop
pop方法会移除列表中一个元素(默认是最后一个),并且返回该元素的值
>>> num=[1,2,3]
>>> num.pop(2)
3
>>> num
[1, 2]
python没有入栈方法,但可以用append代替,出栈用pop.如果入栈刚刚出栈的值,最后得到的结果还是原来的栈
>>> num=[1,2,3]
>>> num.append(num.pop())
>>> num
[1, 2, 3]
7.remove
remove方法用于移除列表中某个值的第一个匹配项:
>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.remove('白云')
>>> nature
['蓝天', '绿树', '青草', '清澈的小河']
8.reverse
reverse方法将列表中的元素反向存放
>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.reverse()
>>> nature
['清澈的小河', '青草', '绿树', '白云', '蓝天']
9.sort
sort方法用于原位置在原位置对列表进行排序
>>> a=[10,9,8,7,6,5,4,3,2,1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
前面说的分片复制a[:],有人会有疑惑,用b=a不行吗?那我们来试一试
>>> a=[10,9,8,7,6,5,4,3,2,1]
>>> b=a
>>> c=a[:]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> c
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
不行,b=a只是对a列表多了一个标签,a和b这两个名字都指向同一个列表,c=a[:]才是真正的复制
另一种获取已排序的列表副本的方法是,使用sorted函数
>>> a=[3,5,1,7,4,0,2]
>>> b=sorted(a)
>>> a
[3, 5, 1, 7, 4, 0, 2]
>>> b
[0, 1, 2, 3, 4, 5, 7]
这个函数实际上可以用于任何序列,却总是返回一个列表
>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']
想要从大到小排序,可以先用sort,再用reverse方法
>>> a=[3,5,1,7,4,0,2]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 7]
>>> a.reverse()
>>> a
[7, 5, 4, 3, 2, 1, 0]
元组
元组与列表一样,也是一种序列,唯一不同的是元组不能修改
创建元组:必须用逗号隔开
>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)
>>> ()#空元组
()
>>> 1,
(1,)
>>> 2#不是元组,逗号很重要
2
>>> 3*(2+1,)
(3, 3, 3)
tuple函数
tuple函数与list基本一样,tuple函数是以一个序列作为参数并把它换为元组,如果参数是元组,就会被原样返回
>>> tuple('hello')
('h', 'e', 'l', 'l', 'o')
>>> tuple((1,2,3))
(1, 2, 3)
基本元组操作
与列表一样
>>> x=1,2,3
>>> x[2]
3
>>> x[1:2]
(2,)