Python序列
Edward = ['abc', 12]序列中的所有元素都是有编号的,从0开始递增
注意: 使用负数索引-1,Python会从右边,也就是从最后一个元素开始计数。最后一个元素的位置编号是-1
索引操作
字符串、函数可以直接对返回结果进行操作
‘hello’[1]
fo = raw_input('year: ')[2]
分片
分片通过冒号:隔开两个索引
numbers = [1, 2, 3, 4]
number[1:2]
输出:
[2, 3]
第一个索引:提取的第一个元素的编号
第二个索引:分片之后,剩余部分的第一个元素的编号。
注意:分片第二个索引指向的元素取不到。
简而言之:分片操作的实现需要两个索引作为边界。第一个索引元素是包含在分片内的。第二个索引元素不在分片内。
举例:
numbers = [1,2,3,4,5,6,7,8,9,10]
如何访问最后3个元素。1.显示操作
numbers[7:10]
#索引10指向第11个元素,第11个元素不存在。为了让分片包含最后一个元素,必须提供最后一个元素的下一个元素的索引作为边界。2.从尾开始计数(不可行)
numbers[-3:-1]
#无法访问最后一个元素3.使用索引0访问最后一个元素(不可行)
numbers[-3:0]
#只要分片最左的索引比右边的晚出现在序列中,一律返回空序列。4.置空最后一个索引(优雅)
numbers[-3:]同样适用序列开始的元素:
numbers[:3]
复制序列
复制整个序列,将两个索引都置空。
number2 = numbers[:]
note:
number2 = numbers
#不可行,会将number2与numbers指向同一个序列
步长
第三个参数是步长。Python中默认步长为1.
numbers[0:10:2]
#取步长为2,取间隔为1个元素的分片。注意:步长不能为0。负数步长,分片从右到左提取元素。
序列加法、乘法
endings = ['st','nd',‘rd’] + 17*['th']\
+ ['st','nd',‘rd’] + ['th']*7
#17*['th']表示17个['th']
空列表、None
空列表
[]用None初始化
seq = [None]*10
成员资格
in运算符:布尔运算符,检查值是否在序列中。
subject = '$$$ abssdjk $$$!'
'$$$' in subject
users = ['bob','jack']
raw_input('your name:') in users
长度、最小值和最大值
内建函数
len、min、maxlen函数
返回序列中所有包含元素的数量min函数、max函数
返回序列中最大和最小的元素注意:
序列包括:
列表、字符串、元组
故:以上序列的特种对于列表字符串和元组都适用。
列表
- 元素赋值
- 元素删除
- 分片赋值
- 列表方法
list函数
用于创建列表,适用于所有类型的序列,例如字符串例:
list('hello')#根据字符串创建列表['h','e','l','l','o']列表转字符串
''.join(somelist)
列表基本操作
1. 元素赋值
2. 删除元素
3. 分片赋值1. 元素赋值
x = [1,2,3]
x[1] = 62. 删除元素
names = ['bob','jack','afra']
del names[2]
#列表长度减一3. 分片赋值
name = list('afra')
name[1:] = list('lpha')分片赋值:
1.可以使用与原序列不等长的序列将分片替换
name = list('perl')
name[1:] = list('ython')2.可以在不需要替换任何原有元素的情况下插入新元素
number = [1,5]
number[1:1] = [2,3,4]3.可以删除元素
number = [1,2,3,4,5]
number[1:4] = []列表方法
常用方法:append、count、extend、index、insert、pop、remove、reverse、sort、高级排序
1.append
在列表末尾追加新对象,直接修改原列表
number = [1,2,3]
number.append(4)2.count
统计某个元素在列表中出现的次数
x = [1,1,2,2,2,3]
x.count(1)3.extend
在列表末尾一次性追加另一序列的多个值。即:用新列表扩展原因的列表。
extend和连接操作'+'的区别:
extend方法修改了序列 原始的连接操作不修改序列,返回一个全新的列表 连接操作效率比extend方法低
4.index
从列表中找出某个值第一个匹配项的索引位置
knight = ['hao','a']
knight.index('hao')5.insert
将对象插入到列表中。
numbers = [1,2,3]
number.insert(3,'four')6.pop
移除列表中的一个元素(默认最后一个),返回该元素的值。
pop方法是唯一修改列表又返回元素值的列表方法。
Python中实现栈:,出栈pop,入栈append。
x[1,2,3,4]
x.pop()
x.pop(0)Note:在JavaScript中,pop只弹出栈顶值,不会返回栈顶值,可使用top()获取栈顶值
7.remove
移除列表中某个值的第一个匹配项。修改列表,没有返回值。
x = ['i','want','to','to']
x.remove('to')8.reverse
将列表倒置。改变列表,没有返回值。
x = [1,2,3]
x.reverse()
9.sort
在原位置对列表排序。修改列表,返回None。
x = [8,7,2,43,45]
x.sort()思考:
用户需要一个排好序的列表副本,但是保留原有列表不变。
把x的副本赋值给y,对y进行排序。
代码:
x = [1,2,4,5,6,1,23,2,2,3,]
y = x[:]
y.sort()
#强调:x[:]是一种很有效率的复制整个列表的方法。只是简单的把x赋值给y,会让x和y都指向同一个列表。使用sorted函数
#获取已排序的列表的副本
x = [1,3,4,5,2]
y = sorted(x)
#note:sort()是列表方法,sorted是函数
10.高级排序
cmp自定义比较函数
numbers.sort(cmp)key 为每个元素创建一个键,根据键排序
numbers.sort(key = len)reverse = true
numbers.sort(reverse = true)
元组
用圆括号表示,不可修改
(1,2,3)空元组
()一个值的元组
(42,)必须加逗号,即使只有一个值。逗号非常重要。(4+2) #不是元组 (4+2,) #是元组
tuple函数
一序列作为参数转换为元组
tuple([1,2,3])#(1,2,3)
tuple('abc')#(a,b,c)
评论列表(0条)