Python 数组[],元组(),字典{}的异同

#序列
Python有6种内建的序列,在这里我们重点讨论两种,数组和元组。所有序列都可以做某些特定的操作,大致上常用的是:加,乘,索引,分片以及检查某个元素是否属于序列的成员。
Python还提供一些内建函数来计算序列长度,找出最大值与最小值。
注意:所有的序列都是从0开始递增。

索引

序列中的元素都是有编号的,且编号是从0开始,从左往右数,最后一个为length-1.
从右往左数,因为首元素为0,所以最后一个元素应该为-1.
example:
我认为索引最值得引人注目的地方就是,字符串字面值能够直接使用索引
hello[1]
结果:e
##分片
索引用来访问单个元素,用分片来访问一定范围内的元素。分片用:隔开。
所有的分片操作都有两个索引边界number[3:6] 第一个边界包含在内,第二个边界不包含在内。
分片操作可以设置步长,默认步长为1,number[3:6:2] 与matlab不同的是,python分片的步长为第三个参数。当你是用例如number[:6:2] 或者number[2::2] 以及
number[::2] 这样省略边界的分片时,默认是从列表的首尾位置开始分片。
分片也可以用负值,在这里不做介绍。
##序列相加
两种相同类型的序列是可以相加的,不同类型的不可以相加。
[1,2,3]+[4,5,6]

##序列相乘
用一个数字x乘以一个序列生成新的序列,而在新的序列中,原来的序列被重复X次
example:
python*5

None,空列表以及初始化

在数组(列表)中可以用[]——来表示里面什么都没有。如果想要创建10个这样的占位空间,就可以用[]*10来占位或者[0]*10来占位。
若要占一个空间,且里面没任何元素,就可以用None来占位
[None]*10

成员资格,长度len,最小值min,最大值max

成员资格用 in 运算符,这个运算符来检验某个条件是否为真,然后返回相应的值:True与False.
len,max,min,接受的是一个序列

序列的大儿子,列表(数组)

数组

数组也叫列表,用[]来表示,数组中所存的数据是可变的,python 中的数组与matlab中的数组是一样的含义,都是用[]来表示。
列表这种数据结构适合于将值组织到一个结构中,并且通过编号对其引用。
数组可变就是说,当一个数组被创建后,是可以被修改的。数组是序列的大儿子,只要是序列所有的功能,数组都完美的继承,并发扬光大。
数组的各种方法与分片,索引的具体内容,在这里就不详细说明,有时间再说。

序列的闺女,元组

元组是用()来存储数据。元组是一种不可变的序列。创建一个元组,只需要输入1,2,3
1,2,3 或者(1,2,3),空元组的表示方法为()
注意如果元组里面有元素,结尾一定要加,(3,)
元组的乘法与普通乘法的比较:

Out[19]: 126
             3*(40+2,)
Out[20]: (42, 42, 42)

字典,到处乱射的大兄弟

字典是一种通过名字来引用值得数据结构。是python唯一内建的映射类型。用{}来表示。无特殊的顺序,都存储在一个特定的键(Key)中。键可以是数字,字符串,元组。
##字典的创建
字典的键与值用:隔开,项与项之间用逗号(,)。空字典就像这样:{}
注意字典中的键是唯一的,值不唯一。
可以用dict函数,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典。

items=[('name','G'),('age',42)]
d=dict(items)
d
Out[23]: {'age': 42, 'name': 'G'}

dict函数也可以通过关键字参数来创建字典。

d=dict(name='G',age=42)
d
Out[25]: {'age': 42, 'name': 'G'}

字典也有很多与序列相似的基本操作,如

len(d)                  返回d中项(键-值对)的数量
d[k]                     返回关联到键k上的值
d[k]=v                将值v关联到 键k上
del   d[k]             删除键为k的项 
del d['age']
  d
Out[28]: {'name': 'G'}

k in d 检查d中是否含有键位k的项

字典与数组的异同

键类型:字典的键是可以任意的不可变类型,如浮点型,实型,字符串,或者元祖。
自动添加:字典可以任意的往字典里添加键值对,而不需要使用append方法。
成员资格:表达式 k in d (d{}是字典类型) 查找的是键,而不是值。如果表达式 k in d **(d[]是数组)**查找的是值。
example:

   people={'Alice':{'phone':2341,'addr':'Foo drive 23'},
          'Beth':{'phone':'9102','addr':'Bar street'},
          'Cecil':{'phone':'3218','addr':'Baz ave'}}
  labels={'phone':'phone number','addr':'address'}
  name=raw_input('name:')
  request=raw_input('phone number(p)or address(a)?')
  if request=='p':key='phone'
  if request=='a':key='addr'
  if name in people:print"%s's %s is %s."  %(name,labels[key],people[name][key])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值