python基础_第二章_列表和元组

列表和元组

1 序列概述

本章重点讨论其中最常用的两种:列表和元组。
列表和元组的主要不同在于,列表是可以修改的,而元组不可以
序列可包含其他序列,因此可创建一个由数据库中所有人员组成的列表:

>>> edward = ['Edward Gumby', 42]
>>> john = ['John Smith', 50]
>>> database = [edward, john]
>>> database
[['Edward Gumby', 42], ['John Smith', 50]]

2 通用的序列操作

索引
序列中的所有元素都有编号——从0开始递增。你可像下面这样使用编号来访问各个元素:

>>> greeting = 'Hello'
>>> greeting[0]
'H'
>>> greeting[-1]
'o'

切片
使用切片(slicing)来访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔,冒号前为起始位置,冒号后位结束位置(不包括该位置)

>>> tag = '<a href="http://www.python.org">Python web site</a>'
>>> tag[9:30]
'http://www.python.org'
>>> tag[32:-4]
'Python web site'

设置步长
要从序列中每隔3个元素提取1个,只需提供步长4即可。

>>> numbers[::4]
[1, 5, 9]

步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。

>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[::-2]
[10, 8, 6, 4, 2]

序列相加
可使用加法运算符来拼接序列。
不能拼接列表和字符串,虽然它们都是序列。一般而言,不能拼接不同类型的序列。

>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'

乘法
将序列与数x相乘时,将重复这个序列x次来创建一个新序列:

>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>> [42] * 10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]

在Python中, None 表示什么都没有。因此,要将列表的长度初始化为10,可像下面这样做:

>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

成员资格

运算符 in,它检查是否满足指定的条件,并返回相应的值:满足时返回 True ,不满足时返回 False 。这样的运算符称为布尔运算符。

>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
>>> users = ['mlh', 'foo', 'bar']
>>> input('Enter your user name: ') in users
Enter your user name: mlh
True
>>> subject = '$$$ Get rich now!!! $$$'
>>> '$$$' in subject
True

长度、最小值和最大值
内置函数 len 、 min 和 max 很有用,其中函数 len 返回序列包含的元素个数,而 min 和 max 分别返回序列中最小和最大的元素

>>> numbers = [100, 34, 678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34

3 列表

函数 list
可将任何序列(而不仅仅是字符串)作为 list 的参数。

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

基本的列表操作

修改列表:给元素赋值
使用索引表示法给特定位置的元素赋值,如 x[1] = 2 。

>>> x = [1, 1, 1]
>>> x[1] = 2
>>> x
[1, 2, 1]

删除元素
使用 del 语句即可

>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

给切片赋值

>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']

使用切片赋值还可在不替换原有元素的情况下插入新元素。

>>> numbers = [1, 5]
>>> numbers[1:1] = [2, 3, 4]
>>> numbers
[1, 2, 3, 4, 5]

列表方法
像下面这样调用方法:
object.method(arguments)

append

方法 append 用于将一个对象附加到列表末尾。

>>> lst = [1, 2, 3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

clear
方法 clear 就地清空列表的内容。

>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]

copy
方法 copy 复制列表。copy后的列表将是一个和原列表独立的新列表。

>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]
>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b[1] = 4
>>> a
[1, 2, 3]

count
方法 count 计算指定的元素在列表中出现了多少次。

>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to')
2
>>> x = [[1, 2], 1, 1, [2, 1, [1, 2]]]
>>> x.count(1)
2
>>> x.count([1, 2])
1

extend
方法 extend 让你能够同时将多个值附加到列表末尾

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

index
方法 index 在列表中查找指定值第一次出现的索引。
搜索 ‘herring’ 时引发了异常,因为根本就没有找到这个单词。

>>> knights = ['We', 'are', 'the', 'knights', 'who', 'say', 'ni']
>>> knights.index('who')
4
>>> knights.index('herring')
Traceback (innermost last):
File "<pyshell>", line 1, in ?
knights.index('herring')
ValueError: list.index(x): x not in list

insert
方法 insert 用于将一个对象插入列表。

>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]

pop
方法 pop 从列表中删除一个元素(默认为最后一个元素),并返回这一元素。

>>> x = [1, 2, 3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]

remove
方法 remove 用于删除第一个为指定值的元素。
不返回任何值

>>> x = ['to', 'be', 'or', 'not', 'to', 'be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('bee')
Traceback (innermost last):
File "<pyshell>", line 1, in ?
x.remove('bee')
ValueError: list.remove(x): x not in list

reverse
方法 reverse 按相反的顺序排列列表中的元素
不返还任何值

>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]

sort
方法 sort 用于对列表就地排序
不返回任何值

>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

讨论一下不返回任何值

>>> x = [4, 6, 2, 1, 7, 9]
>>> y = x.sort() # 因为sort方法不返回任何值,所以y = None
>>> print(y)
None
>>> x = [4, 6, 2, 1, 7, 9]
>>> y = x.copy() # 对x进行copy
>>> y.sort()
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]
#可以用以下方法
>>> x = [4, 6, 2, 1, 7, 9]
>>> y = sorted(x)
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

高级排序
方法 sort 接受两个可选参数: key 和 reverse 。

>>> x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
>>> x.sort(key=len) #根据长度排序
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']

关键字参数 reverse ,指出是否要按相反的顺序对列表进行排序。

>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]

4 元组

与列表一样,元组也是序列,唯一的差别在于元组是不能修改的,元组语法很简单,只要将一些值用逗号分隔,就能自动创建一个元组。

>>> 1, 2, 3
(1, 2, 3)

元组还可用圆括号括起

>>> (1, 2, 3)
(1, 2, 3)

只包含一个值的元组,后面也要加“,”

>>> 42,
(42,)
>>> (42,)
(42,)

函数 tuple 的工作原理与 list 很像:它将一个序列作为参数,并将其转换为元组

>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1, 2, 3))
(1, 2, 3)

本章函数

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值