学习笔记之Python基础2

列表:

列表在Python中具有举足轻重的地位,也是该语言最通用的序列对象。列表没有固定大小,大小是可变的。需要补充的是,它不像字符串具有不可变性

由于列表是序列中的一种,所以它支持所有对字符串的序列操作。如下:

>>> L=[123,'spam',0.5]    #定义一个含有三个元素的列表
>>> len(L)         #计算列表中的元素个数
3
>>> L[0]  #对列表进行切片索引
123

在列表中,它没有固定类型的约束,也没有固定大小,所以可以按照所需要的要求随意增加或减少列表大,用法如下:

>>> L.append('learn')
>>> L
[123, 'spam', 1.23, 'learn']
>>> L.pop(2)
1.23
>>> L
[123, 'spam', 'learn']
>>> L.insert(1,'python')
>>> L
[123, 'python', 'spam', 'learn']
>>> L.remove(123)
>>> L
['python', 'spam', 'learn']


列表中的append用法可以在列表的尾部插入一项来扩充列表的大小,pop方法则是可以移除所想要移除的一项。在任意位置插入元素可以使用insert方法。想要移除所知道值得元素可以用remove方法。由于列表是可变的,所以大多数方法会直接改变列表,而不是创建新列表。

在列表中还有一些特定的操作,比如sort方法排序操作(默认按照升序对列表排序),reverse对列表进行翻转:

>>> L.sort()
>>> L
['learn', 'python', 'spam']
>>> L.reverse()
>>> L
['spam', 'python', 'learn']

字典:

说完列表要来说说字典。Python内置dict作为定义字典的关键字,在其他语言中也称为map,使用键-值对(key-value)的方式存储,具有极快的查找速度例子:查找对应同学的某科对应的成绩,若用list就需要两个,如果用字典实现的话,直接可以用名字-成绩的对照表关联,直接根据名字查到成绩,并且无论表有多长,查找的速度都不会改变。

List方式:

name=[‘Paul’,’Jack’,‘Tom’]

points=[98,95,90]

dic方式:

d={‘Paul’:98,’Jack’:95,’Tom’:90}

d[‘xxx’]就可以查到xxx同学的成绩了。

运用dict查找的方式原理与查书新华字典是一样的。即先在字典索引表中用部首(或用拼音首字母)查询对应字页码,接着就可以直接翻到该页,找到这字。这种查找方法能实现快速查询,不会随字数总数多少而改变。

而list查找的方法就像从字典第一页开始翻到该字为止,这样就会随着list元素量增加,而查找变慢。

Dict的这种key-value存储方式,当放进去值得时候,必须根据key算出value的存放地方。数据在dict里,还可以通过key改变指定的值,并且每次指定都会改变前一次的值。

例如:

d[‘Jack’] = 80

如果key不存在,就会报错:

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

KeyError: 'xxx'

为了避免key不存在的错误,有两种方法:

1)通过in判断key是否存在。

如:‘Jack’in d

True

2)通过dict提供的get方法,如果key不存在,可以返回None,或者是自己指定的value值。

d.get(‘xxx’) à None

d.get(‘xxx’,-1) à -1

删除一个key,用pop(key)方法,对应的value也会从dict中删除:

d.pop(‘xxx’) à xxx对应的value,如上面定义的字典xxx:Paul所对应的value就是98。

dict的特点:

1.      查找和插入的速度极快,不会随着key数量的增加而变慢;

2.      需要占用的内存较大,浪费存储较多。

而list相反:

1、查找和插入的速度随元素的数量而变化

2、占用空间小,浪费内存小。

所以,dict与list各自有时间(dict)与空间(list)的优势。

值得注意的是,字典是无序排列:dict存放顺序不等于key放入的顺序。并且key值是“不可变对象”,原因是dict是根据key来计算value的位置,如果key每次的值不同,那么dict内部就杂乱无章了这种通过key值计算位置的算法称为哈希算法(hash),在Python中,字符串、整数等都是不可变的,list为可变的,所以list不能成为key值。

元组:

元组对象就像一个不可变的列表一样。与列表相同,元组也是序列,但它又是像字符串一样不可变的。它也支持任意类型与任意嵌套的序列操作。

大部分的操作方式与list相似,但它的不变性决定了无法像列表一样可以随意删填元素。(后面也会有更多介绍)





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值