《Python基础教程(第2版·修订版)》 第2章 列表和序列(学习笔记·二)

时间:2022-06-08 18:40:41

2.2.2分片

1.索引用于访问单个元素,可以使用分片操作来访问一定范围内的元素。

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


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


>>> numbers[7:10]#访问后三个元素
[8, 9, 10]
>>> numbers[-3:-1]
[8, 9]
>>> numbers[-3:]
[8, 9, 10]
>>> numbers[-3:0]#会发生错误
[]
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>


2_2.py  分片示例

#对http://www.something.com形式的URL进行分割
url = raw_input('Please enter the URL: ')
domain = url[11:-4]
print "Domain name: " + domain

运行效果:

>>> 
Please enter the URL: http://www.python.org
Domain name: python


2.更大的步长

运行示例:

>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:10:2]#前两个构成范围,最后一个是步长
[1, 3, 5, 7, 9]
>>> numbers[3:6:3]
[4]
>>> numbers[::4]
[1, 5, 9]
>>> numbers[8:3:-1]#步长可以为负数,但不能为0,表示从右往左提取元素
[9, 8, 7, 6, 5]
>>>


2.2.3序列相加

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


2.2.4乘法

运行示例:

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


None是一个Python的内建值,它的确切含意是“这里什么也没有”。如下例子可以初始化一个长度为10的空列表

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


2_3 序列(字符串)乘法示例

#以正确的宽度在居中的“盒子”内打印一个句子
#注意,整数除法运算符(//)只能用在Python 2.2以及后续版本,在之前的版本中,只是用普通除法(/)
# -*- coding: cp936 -*-
sentence = raw_input("Sentence: ")

screen_width = 80
text_width = len(sentence)
box_width = text_width + 6
left_margin = (screen_width - box_width) // 2

print
print ' ' * left_margin + '+' + '-' * (box_width - 2) + '+'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * left_margin + '|' + sentence + '|'
print ' ' * left_margin + '|' + ' ' * text_width + '|'
print ' ' * left_margin + '+' + '-' * (box_width - 2) + '+'
print

运行效果

>>> 
Sentence: He's a very naughty boy!

+----------------------------+
| |
|He's a very naughty boy!|
| |
+----------------------------+


2.2.5 成员资格

这里用到一个 "in"运算符来检查成员资格,看示例

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

2_4.py 序列成员资格示例

#检查用户名和PIN码
# -*- coding: cp936 -*-
database = [
['albert','1234'],
['dilbert','4242'],
['smith','7524'],
['jones','9843']
]
username = raw_input('User name: ')
pin = raw_input('PIN code: ')

if [username, pin] in database: print 'Access granted'

运行效果:

>>> 
User name: albert
PIN code: 1234
Access granted


2.2.6 长度,最小值和最大值

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