博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-列表和元祖
阅读量:7126 次
发布时间:2019-06-28

本文共 3201 字,大约阅读时间需要 10 分钟。

Python-列表和元祖

首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!

我会在当天或者第二天及时回复,并且改进~~


在Python中,最基本的数据结构是序列,

序列包含:

  • 列表
  • 元祖

其他的内建序列类型有:

  • 字符串
  • Unicode字符串
  • buffer对象
  • xrange对象

一、通用序列操作

所有的序列类型都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘及检查某个元素是否属于序列的成员。

1.1 索引

>>> name = 'hongxue'>>> name[0]'h'>>> name[0:3]'hon'这就是索引,字符串是一个由字符组成的序列。索引0指向第1个元素,在当前例子中就是h可以通过索引获取元素>>> str = raw_input('Year: ')[3]Year:2015>>> str'5'

1.2 分片

索引是访问单个元素,分片与索引类似,但是它来访问的是一定范围内的元素,分片通过冒号隔开的两个索引实现:

分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是要提取的第1个元素的编号,而最后的索引则是分片之后剩余部分的第1元素的编号。

(1) 优雅的捷径>>> numbers = [1,2,3,4,5,6,7,8,9,10]>>> numbers[0:3][1,2,3]>>> numbers[3:8][4,5,6,7,8]>>> numbers[2:7][3,4,5,6,7]numbers[-3:-1][8,9]numbers[-3:][8,9,10]numbers[:3][1,2,3]numbers[:][1,2,3,4,5,6,7,8,9,10]分片示例:>>> name = raw_input('Please input your name:')[0:4]Please input your name:hongxue>>> print name'hong'

(2) 更大的步长

进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数–步长通常都是隐式设定的。默认为1,则可以手动进行设置

>>> print numbers[:][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][9,8,7,6,5]>>> numbers[10:0:-2]['10,8,6,4,2']>>> numbers[::-2][10,8,6,4,2]>>> numbers[5::-2][6,4,2]>>> numbers[:5:-2][10,8]对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素,对于一个负数步长,Python会从序列的尾部开始向左提取元素,直到第一个元素。

1.3 序列相加

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

>>> [1,2,3] + [4,5,6][1,2,3,4,5,6]>>> x = ['hong']>>> y = ['xue']>>> x + y['hong','xue']当然,列表和字符串是无法连接在一起的,尽管它们都是序列。两种类型相同的序列才能进行连接操作,例如:>>> x = '123'>>> y = ['4,5,6']>>> x + yTraceback (most recent call last):  File "
", line 1, in
TypeError: cannot concatenate 'str' and 'list' objects

1.4 乘法

用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复n次

>>> 'Python' * 5'PythonPythonPythonPythonPython'>>> [30] * 10'30,30,30,30,30,30,30,30,30,30'

None、空列表和初始化

空列表可以简单的通过两个中括号进行表示,里面什么也没有。但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以想前面那样,[42] * 10,这样会更加实际一些。然而,有时候可能会需要一个值来代表空值—意味着里面没有任何东西,这个时候就需要用到None,None是Python的内键值,它的确切含义是”这里什么也没有”。

创建占用十个元素的空间>>> [] * 10[]创建一个空值>>> Value = [None] * 10>>> Value[None,None,None,None,None,None,None,None,None,None]
代码清单   序列(字符串)乘法表示sentence = raw_input('Sentence: ')screen_width = 80text_width = len(setence)box_width = text_width + 6left_margin = (screen_width - box_width) / 2print 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

1.5 成员资格

为了检查一个值是否在序列中,可以使用in运算符,这个运算符检查某个条件是否为真,然后返回相应的值,也叫做’布尔值’

条件为真返回True条件为假返回False>>> permissions='rw'>>> 'r' in permissions   >>> 'w' in permissions>>> 'x' in permissions#检查用户是否在name列表中>>> name = ['hongxue','xiaomao','yixiao']>>> 'hongxue' in name>>> 'xiaomao' in name
#检查用户名和PIN码>>> database = [['hongxue','123'],['yixiao','456'],['xiaomao','789']]>>> username = raw_input('User name: ')>>> pin = raw_input('PIN code: ')>>> if [username,pin] in database : print 'Access granted'

1.6 长度、最小值和最大值

内建函数len、min和max非常有用

len函数返回序列中所包含元素的数量min函数返回序列中最小的元素max函数返回序列中最大的元素numbers = [456,214,999]>>> len(numbers)      #返回元素个数3>>> min(numbers)      #返回最小元素214>>> max(numbers)      #返回最大元素999

转载地址:http://mprel.baihongyu.com/

你可能感兴趣的文章
MySQL入门-10:子查询与联结表
查看>>
VMware三个版本workstation、server、esxi的区别
查看>>
Nginx 安装及调优
查看>>
hbase shell基本操作命令详解
查看>>
网络编程学习——数据链路访问
查看>>
CentOS6.2下搭建LVS(NAT)+Keepalived实现高性能高可用负载均衡服务
查看>>
Centos7下安装及配置PPTP ***
查看>>
oracle 配置监听器
查看>>
Red Hat 配置本地 yum源
查看>>
[翻译]CloudBees 设计原则
查看>>
MFS分布式文件系统的管理和使用维护(二)
查看>>
Spring实现AOP的几种方式详解
查看>>
海量数据处理专题(五)——堆
查看>>
我的友情链接
查看>>
Linux下双网卡双网关配置路由表
查看>>
Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...
查看>>
跟我学习dubbo-Dubbo管理控制台的安装(3)
查看>>
Divice eth0 dose not seem to be present ,delaying initalization解决办法
查看>>
02-03-linux根文件系统详解
查看>>
HTML5+JavaScript+CSS实现音乐播放器——难点二:自己设计一个控制音乐播放的控制器...
查看>>