0. 序列

序列概览

Python 包含6 种内建的序列,这里重点讨论最常用的两种类型:列表和元组。

列表与元组的主要区别在于,列表可以修改,元组则不能。

如果要根据要求来添加元素,那么列表可以会更好用;由于元组的查询速度快,序列不能修改的时候,使用元组则更为合适。

在操作一组数值的时候,序列很好用。可以用序列表示数据库中一个人的信息---第1是姓名,第2个元素是年龄。根据上述内容编写一个列表。

>>>
hu=[‘huhu‘,25]

同时,序列也可以包含其他的序列,因此,构建如下一个人员的信息的列表也是可的,这个列表就是你的数据库:

>>> huhu =
[‘huhu‘,25]

>>> chongshi = [‘chongshi‘,32]

>>> database = [huhu,chongshi]

>>> database

[[‘huhu‘, 25], [‘chongshi‘, 32]]

通用序列操作

所有序列类型都可以进行某些特定的操作。这些操作包括:

索引(indexing)、分片(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)。

索引

序列中的所有元素都是有编号的-----从0 开始递增

>>>
greeting = ‘chongshi‘

>>> greeting[0]

‘c‘

>>> greeting[2]

‘o‘

使用负数索引时,python 会从右边,也就是从最后1个元素开始计数。最后1个元素的位置编号是-1 (不是-0, 因为那会和第1个元素重合):

>>>
greeting = ‘chongshi‘

>>> greeting[-1]

‘i‘

>>> greeting[-2]

‘h‘

当然,我们也可以通过另一种方式使用所引,两种方式的效果是一样的:

>>>
‘chongshi‘[0]

‘c‘

>>> ‘chongshi‘[-1]

‘i‘

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。

假设只对用户输入年份的第4个数字感兴趣,那么,可以进行如下操作:

>>>
fourth = raw_input(‘year:‘)[3]

year:2013

>>> fourth

‘3‘

索引示例:

#根据给定的年月日以数字形式打印出日期

months = [

‘January‘,

‘February‘,

‘March‘,

‘April‘,

‘May‘,

‘June‘,

‘July‘,

‘August‘,

‘September‘,

‘October‘,

‘November‘,

‘December‘

]

#以1-31的数字作为结尾的列表

endings = [‘st‘,‘nd‘,‘rd‘]+ 17*[‘th‘]\

+[‘st‘,‘nd‘,‘rd‘]+
7*[‘th‘]\

+[‘st‘]

year  =raw_input(‘year:‘)

month =raw_input(‘month(1-12):‘)

day   =raw_input(‘day(1-31)‘)

month_number
= int(month)

day_number = int(day)

#记得要将月份和天数减1,以获得正确的索引

month_name = months[month_number-1]

ordinal = day + endings[day_number - 1]

print
month_name + ‘ ,‘ + ordinal + ‘ ,‘ +
year

-----------------------------------------------

输入:

>>>

year:2013

month(1-12):4

day(1-31)14

输出:

April ,14th ,2013

--------------------------------------------------------------------------------------------------

分片

与使用索引来访问单个元素类似,可以使用分片操作来访问一琮范围内的元素。分片通过冒号相隔的两个索引来实现:

>>>
tag = ‘<a href="http://www.python.org">Python web
site</a>‘

>>> tag[9:30]                                 #
取第9个到第30个之间的字符

http://www.python.org

>>> tag[32:-4]                               #
取第32到第-4(倒着数第4个字符)

‘Python web site‘

如果求10个数最后三个数:

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

>>> numbers[7:-1]   # 从第7个数到
倒数第一个数

[7, 8]                             
#显然这样不可行

>>> numbers[7:10]  
#从第7个数到第10个数

[7, 8, 9]                         
#这样可行,索引10指向的是第11个元素。

>>> numbers[7:]        #
可以置空最后一个索引解决

[7, 8, 9]

>>> numbers[:3]

[0, 1, 2]

>>> numbers[:]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

分片示例:

url = raw_input(‘Please
enter the URL:‘)

domain = url[11:-4]

print "Domain
name:" + domain

------------------------------------------

输入:                                #  对http://fnng.cnblogs.com形式的URL进行分割

>>>

Please enter the URL:http://fnng.cngblogs.com

输出:

Domain name:.cngblogs

更大步长:

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

>>> numbers[0:10:1]  
#求0到10之间的数,步长为1

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> numbers[0:10:2]   #步长为2

[0, 2, 4, 6, 8]

>>> numbers[0:10:3]  
#步长为3

[0, 3, 6, 9]

序列相加

通过使用加号可以进行序列的连接操作:

>>>
‘hello.‘+‘world!‘

‘hello.world!‘

>>> [1,2,3] + ‘world!‘

Traceback (most recent
call last):

File "<pyshell#20>",
line 1, in <module>

[1,2,3] + ‘world!‘

TypeError: can only concatenate list (not "str") to list

正如错误提示,列表和字符串是无法连接接在一起的,尽管它他们都是序列。简单来说,两种相同类型的序列才能进行连接操作。

-------------------------------------------------------------------------------------------------

乘法

>>> ‘python ‘
* 5

‘python python python python python ‘

>>> [25] * 10

[25, 25, 25, 25, 25, 25, 25, 25, 25, 25]

如果想创建一个占用十个元素空间,却不包括任何有用的内容的列表,可以用None

>>> sequence =
[None] * 10

>>> sequence

[None, None, None, None, None, None, None, None, None, None]

序列(字符串)乘法示例:

# 以正确的宽度在居中的“盒子”内打印一个句子

#
注意,整数除法运算符(//)只能用在python 2.2 以及后续版本,在之前的版本中,只能用普通除法(/)

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)+ ‘+‘

---------------------------------------------------------

输入:

>>>

Sentence : haha! this is my box

输出:

+------------------------+

|                                        |

|  haha! this is my box  |

|                                        |

+------------------------+

成员资格

为了检查一个值是否在序列中,可以使用 in 运算符。该运算符和之前已经讨论过的(例如 + , * 运算符)有一点不同。这个运算符检查某个条件为真或假的(True or False )。

in运算符的例子:

>>>
permissions = ‘rw‘

>>> ‘w‘ in permissions

True

>>> ‘y‘ in permissions

False

>>> users = [‘zhangsan‘, ‘lisi‘,‘wangwu‘]

>>> raw_input(‘Enter your user name: ‘) in users

Enter your user name: lisi

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

>>> max(2,3)

3

>>> min(9,3,2,5)

2

来自为知笔记(Wiz)

时间: 2024-08-01 12:23:28

0. 序列的相关文章

算法题:找出同一个序列中的最大值和最小值

package arithmetic; /** * 同时找出一个序列中最大值和最小值 * 分两种情况:(1)序列只有两个元素 * (2)序列有多个元素,有多个元素分别从序列的两端开始查找 * @author SHI */ public class MaxAndMin { public static void main(String[] args) { int[] a = { 122, 41, 4, 5, 7, 2, 89, 122, 34, 56 }; int low = 0; int high

06 序列:字符串、列表和元组 - 《Python 核心编程》

?? 序列简介 ?? 字符串 ?? 列表 ?? 元组 6.1 序列顺序访问 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到. 而多个元素可以通过切片操作的方式一次得到. 下标偏移量是从0 开始到总元素数-1 结束. 标准类型操作符 标准类型操作符一般都能适用于所有的序列类型. 序列类型操作符 成员关系操作符 (in, not in) 连接操作符( + ) 重复操作符 ( * ) 切片操作符 ( [], [:], [::] )  正负索引的区别在于正索引以序列的开始为起

Python之数据结构:序列

一.序列 1.列表.元组和字符串都是序列 二.序列的两个特点:索引操作符和切片操作符 1.索引操作符:从序列中抓取一个特定项目 下标操作:使用索引获取序列中的单个项目: eg:shoplist[0] 序列的第一个项目: shoplist[-1] 序列的最后一个项目 2.切片操作符:获取序列的一个切片,即一部分序列 (1)shoplist[a:b] 前开后闭 比如shoplist[1:3],返回序列只有第二和第三个项目,不包含第四个 (2)用负数做切片,负数用在从序列尾开始计算的位置 比如:sho

Python语言之数据结构1(序列--列表,元组,字符串)

0.序列 列表,元组,字符串都是序列. 序列有两个特点:索引操作符和切片操作符.索引操作符让我们可以从序列中抓取一个特定项目.切片操作符让我们能够获取序列的一个切片,即一部分序列. 以字符串为例: 1 str="01 3456 89?" 2 3 print( str[0] ) #'0',索引 4 print( str[1:5] ) #'1 34 ',切片 5 print( str[5:1:-1] ) #'543 ' 6 print( str[1:5:-1] ) #output a '\

【python】序列切片和range函数

序列的每个元素都可以用2种索引的表达方式,一种是正数索引,另一种是负数索引. 序列切片,作用是访问序列中一定范围的元素,格式“序列名[A:B]”,其中A为所切片的第一个元素的索引号,而B为切片后剩下的第一个元素的索引号.data[:]是整个data列表 data=[1,2,3,4,5,6,7,8,9] data[3:6] [4, 5, 6] >>> data[:]#指没有进行切片 [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> data[-3:0]#序列

Swift2.0语言教程之函数的返回值与函数类型

Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有一个返回值的函数 开发者希望在函数中返回某一数据类型的值,必须要在函数声明定义时为函数设定一个返回的数据类型,并使用return语句进行返回.其中,return语句的一般表示形式如下: return 表达式 其中,表达式可以是符合Swift标准的任意表达式.而具有返回值的函数声明定义形式如下: fu

Python序列结构--集合

集合:元素之间不允许重复 集合属于Python无序可变序列,元素之间不允许重复 集合对象的创建与删除 直接将值赋值给变量即可创建一个集合 >>> a = {3,5}>>> type(a)<class 'set'> set()函数将列表.元组.字符串.range对象等其他可迭代对象转换为集合,如果原来的数据中存在重复元素,则转换为集合的时候只保留一个:如果原序列或迭代对象中有不可哈希的值,无法转换为集合,抛出异常 >>> a_set=set(

csp-s模拟测试52平均数,序列题解

题面:https://www.cnblogs.com/Juve/articles/11602244.html 平均数: 第k个平均数不好求,我们考虑二分,转化成平均数小于x的有几个 虑把序列中的每个数减去 x,则我们只需求区间和小于 0 的区间数量. 我们对这个序列求前缀和,则区间[L,R]和小于 0 当且仅当 SL-1>SR, 答案即为前缀和序列 S 的逆序对数量,使用经典的归并排序即可解决 #include<iostream> #include<cstdio> #incl

【C++11】30分钟了解C++11新特性

作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外). C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto.decl