-
容器
-
1.序列(列表和元组)
2.映射(字典)
3.集合
通用序列(列表元组)操作
-
索引
-
序列中所有的元素都是有编号的—从0开始递增
字符串是一个有字符组成的序列
Python可以通过-1索引最后一个元素
>>>a = 'Hello'
>>>a[-1]
o
-
分片
-
访问一定范围内的元素
>>>a = [1,2,3,4,5,6]
>>>a[1:3]
[2,3]
同样可负数代表倒数
>>>a[-3:-1]
[4,5]
>>>a[-3:0]
[]
不写数字代表索引到头~
>>>a[-3:]
[4,5,6]
>>>a[:3]
[1,2,3]
>>>a[:]
[1,2,3,4,5,6]
还有最后一个是步长,步长也可以是负数
>>>a[::4]
[1,5]
>>>a[4:2:-1]
[5,4]
-
序列相加
-
序列加法==序列的连接
>>>[1,2,3]+[4,5,6]
[1,2,3,4,5,6]
>>>'Hello,'+'world!'
'Hello,world!'
>>>[1,2,3]+'world!'
TypeError: can only concatenate list (not "str") to list
列表和字符串无法连接,两种相同类型的序列才能进行连接
-
乘法
-
就是序列重复连接
>>>'python'*5
'pythonpythonpythonpythonpython'
None、空列表和初始化
-
None是一个Python的内键值,“这里什么也没有”
>>>a = [None]*5
>>>a
[None, None, None, None, None]
-
成员资格
-
检查一个值是否在序列中,
in
>>>a = [1,2,3]
>>>1 in a
True
字符串也可以哦
>>>a = 'asdfg'
>>>'a' in a
True
>>>'asd' in a
True
-
长度、最小值和最大值
-
就是三个函数
len(),min(),max()
列表
-
list函数
-
>>>list('Hello')
['H', 'e', 'l', 'l', 'o']
基本的列表操作
-
元素赋值
-
>>>x = [1,1,1]
>>>x[1]=2
>>>x
[1,2,1]
-
删除元素
-
del()
函数~
-
分片赋值
-
分片是十分强大的~不信你看看~~
批量赋值
>>>a = list('Perl')
>>>a[2:]=list('ar')
>>>a
['P','e','a','r']
插入元素
>>>a = [1,5]
>>>a[1:1] = [2,3,4]
>>>a
[1,2,3,4,5]
删除元素
>>>a=[1,2,3,4,5]
>>>a[1:4]=[]
>>>a
[1,5]
列表的方法
方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,一般来说,方法可以这样调用:
对象.方法(参数)
-
append
-
在列表末尾追加新的对象
>>>a = [1,2,3]
>>>a.append(4)
>>>a
[1,2,3,4,]
-
count
-
统计列表中某个元素的出现次数
>>>a = [1,2,3,1,2,1,1]
>>>a.count(1)
4
-
extend
-
在列表末尾一次性追加多个值,用列表扩展列表
>>>a = [1,2,3]
>>>b = [4,5,6]
>>>a.extend(b)
>>>a
[1,2,3,4,5,6]
以上操作等价于
a = a+b
效率比extend低。
还可以这样子a[len(a):]=b
-
index
-
从列表中找出某个值第一个匹配项的索引位置
>>>a = [1,2,3,1,2,1,1]
>>>a.index(2)
1
-
insert
-
将对象插入到列表中
>>>a = [1,2,3,4,5]
>>>a.insert(2,'s')
>>>a
[1, 2, 's', 3, 4, 5]
以上操作等价于
>>>a[2:2]=['s']
>>>a[2:2]='s'
-
pop
-
移除列表一个元素(默认最后一个),并且返回该元素的值
>>>a = [1,2,3,4,5]
>>>a.pop()
5
>>>a
[1,2,3,4]
>>>a.pop(0)
1
>>>a
[2, 3, 4]
-
remove
-
移除列表中某个值的第一个匹配项
>>>a = [1,2,3,2,3]
>>>a.remove(2)
>>>a
[1,3,2,3]
-
reverse
-
将列表中的元素反向存放
>>>a = [1,2,3]
>>>a.reverse()
>>>a
[3,2,1]
等价于,reversed()返回的是一个迭代器
>>>list(reversed(a))
-
sort
-
在原位置对列表进行排序,改变原来的列表
>>>a = [8,2,3,2,3]
>>>a.sort()
>>>a
[2,2,3,3,8]
这里需要注意,这个方法是不会返回值的,想要保留原list次序,可以复制个list副本。
这里要注意复制的方法x=y
是不行的,这就是指向了同一个位置了。要x=y[:]
才可以。
还可以直接用sorted()
函数
-
高级排序
-
特定方式排序(默认是an默认排序规则升序排序)
定义自己的compare(x,y)
函数。在x<y
返回负数,x>y
返回整数,x==y
返回0。>>>a = [8,2,3,2,3]
>>>cmp(42,32)
1
>>>cmp(12,32)
-1
>>>a.sort(cmp)
>>>a
[2,2,3,3,8]
sort还有另外两个参数,key也是函数,为每个元素创建一个键,根据键排序。
reverse是简单布尔值,决定是否进行反向排序
元组:不可变序列
元组与列表一样,只是元组不能修改,所以元组是hashable的,字符串也是不可修改的
>>>1,2,3
(1,2,3)
>>>(1,2,3)
(1,2,3)
一个值的元组
>>>42,
(42,)
-
tuple函数
-
与list基本一样
元组的基本操作
就是创建和访问
元组的用处
- 元组可以在映射(和集合成员)中当做键,列表不行
- 元组是很多内建函数和方法的返回值
本章新函数
函数 | 描述 |
---|---|
cmp(x,y) | 比较两个值 |
len(seq) | 返回序列的长度 |
list(seq) | 把序列转换成列表 |
max(args) | 返回序列或者参数集合中的最大值 |
min(args) | 返回序列或者参数集合的最小值 |
reversed(seq) | 对序列进行反向迭代 |
sorted(seq) | 返回已排序的包含所有seq所有元素的列表 |
tuple(seq) | 把序列转换成元组 |