>>> edward=['Edward Gumby', 42]
>>> john=['John Smith', 50]
>>> database=[edward, john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]
索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)、检查某元素是否属于序列(成员资格)、计算序列长度、找出最大和最小元素、迭代(iteration)。
正序 | 0 | 1 | 2 | … | N-3 | N-2 | N-1 |
倒叙 | -N | -(N-1) | -(N-2) | … | -3 | -2 | -1 |
- 可见,seq[m] = seq[-(N-m)]。
3.若函数返回序列,可直接对返回结果进行索引。
>>>function()[m]
加号表示序列的连接操作,只有相同类型的序列才能进行连接。
#错误语法
>>> [1, 2, 3]+'world'
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: can only concatenate list (not "str") to list
#正确语法
>>> [1, 2, 3]+['world']
[1, 2, 3, 'world']
用数字x乘以一个序列会生成新序列,新序列内容为将原序列重复x次。
>>> [1, 2, 'abc']*5
[1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc', 1, 2, 'abc']
空列表,占用空间但是使用空值(None)来赋值。
>>> sequence=[None]*5
>>> sequence
[None, None, None, None, None]
布尔运算,运算符 in。以下为常见用法及使用环境。
#检测字符是否在字符串中,例如检测文件权限
>>> permission='rw'
>>> 'r' in permission
True
>>> 'x' in permission
False
#检测字符串是否在字符串中,例如过滤垃圾邮件
>>> subject = '$$$ Get rich now!!! $$$'
>>> '$$$' in subject
True
#检测序列元素是否在序列中,例如检测用户是否合法,用于安全策略
>>> user=['aaa', 'bbb', 'ccc']
>>> raw_input("What's your name: ") in user
What's your name: abc
False
>>> raw_input("What's your name: ") in user
What's your name: aaa
True
len、min和max
list(序列)将“序列”转化为列表
列表适用于所有序列的标准操作(2.2节),下述操作为修改列表方法。
不能为位置不存在的元素赋值。
>>> seq=[None]*3
#正确语法
>>> seq[2] = 1
>>> seq
[None, None, 1]
#错误语法
>>> seq[3] = 2
Traceback (most recent call last):
File "" , line 1, in
IndexError: list assignment index out of range
delete语句。用法如下:
```
>>> seq=['aaa', 'bbb','ddd','ddd','eee','fff']
>>> del seq[3]
>>> seq
['aaa', 'bbb', 'ddd', 'eee', 'fff']
```
等长替换
>>> seq = list('python')
>>> seq[-2:] = list('er')
>>> seq
['p', 'y', 't', 'h', 'e', 'r']
不等长替换
>>> seq = list('python')
>>> seq[-2:] = list('ern')
>>> seq
['p', 'y', 't', 'h', 'e', 'r', 'n']
插入
>>> seq = list('python')
>>> seq[1:1] = list('---')
>>> seq
['p', '-', '-', '-', 'y', 't', 'h', 'o', 'n']
删除
>>> seq = list('python')
>>> seq[1:4] = []
>>> seq
['p', 'o', 'n']
方法:一个与某些对象(列表、数字、字符串或其他类型对象)有紧密联系的函数。
方法调用:对象.方法 ()
>>> testlist=[1, 2, 3]
>>> testlist.append(10)
>>> testlist
[1, 2, 3, 10]
>>> ['a', 'b', 'c', 'd', 'e', 'a', 'd', 'c'].count('c')
2
>>> a = [1, 2, 3]
>>> a.extend([4, 5, 6])
>>> a
[1, 2, 3, 4, 5, 6]
>>> testseq = ['Tell', 'me', 'who', 'is', 'talking']
>>> testseq.index('who')
2
>>> testseq.index('whos')
Traceback (most recent call last):
File "" , line 1, in
ValueError: 'whos' is not in list
>>> numbers = [1, 2, 3, 4, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 4, 5, 6, 7]
>>> testlist = [1, 2, 3]
>>> testlist.pop()
3
>>> testlist.pop(1)
2
>>> testlist
[1]
pop常用于栈的实现。
>>> testlist = [1, 2, 3, 4, 5, 6, 7]
>>> testlist.remove(4)
>>> testlist
[1, 2, 3, 5, 6, 7]
>>> testlist.remove(4)
Traceback (most recent call last):
File "" , line 1, in
ValueError: list.remove(x): x not in list
>>> testlist = [1, 2, 3, 4, 5, 6, 7]
>>> testlist.reverse()
>>> testlist
[7, 6, 5, 4, 3, 2, 1]
>>> testlist = [1, 4, 7, 6, 2, 3, 5]
>>> testlist.sort()
>>> testlist
[1, 2, 3, 4, 5, 6, 7]
保持原列表不变,并获取列表的有序副本方法有二:
>>> x = [1, 4, 7, 6, 2, 3, 5]
>>> y = x[:] #不可使用 y=x,该操作将 y 指向 x 所表示的列表;
>>> #而 x[:] 是复制整个列表
>>> y.sort()
>>> x
[1, 4, 7, 6, 2, 3, 5]
>>> y
[1, 2, 3, 4, 5, 6, 7]
使用sorted函数
>>> x = [1, 4, 7, 6, 2, 3, 5]
>>> y = sorted(x)
>>> x
[1, 4, 7, 6, 2, 3, 5]
>>> y
[1, 2, 3, 4, 5, 6, 7]
创建元组:用逗号分割一些值,自动创建元组。
#创建元组
>>> 1,2,3
(1, 2, 3)
>>> (4,5,6)
(4, 5, 6)
#创建空元组
>>> ()
()
#创建只有一个元素的元组,必须在元素后添加“,”
#错误创建示例
>>> (2)
2
#正确创建示例
>>> (2,)
(2,)
以一个序列为参数并将其转换为元组。
>>> tuple('abc')
('a', 'b', 'c')
参照其他类型序列。