Python的基本数据结构

文章目录
  1. 1. 1.序列
    1. 1.1. 索引
    2. 1.2. 分片
    3. 1.3. 序列加
    4. 1.4. 序列乘
    5. 1.5. 成员资格
    6. 1.6. 长度最大最小判定
  2. 2. 2.列表(可修改的序列)
  3. 3. 3.元组(不可变的序列)
  4. 4. 4.字典(内建的映射类型)

终于决定学习下python了,受到多位同事、同学一直以来的安利,但一直没有无缘python。
好在最近有点闲功夫,就想着看看python吧。

对于一位有着其他编程语言经验的人而言,抱起一本python基础教程从头看起实在是有些浪费时间,
基本的语句语法,看看实际代码就基本了解各二三了,至于逻辑控制流程,关键字之类的,现在市面的各类开发语言难道不是大同小异吗?

所以,就挑一些关键的不同点,以及一些编程必须完全掌握的基础点。

对于python,我花了几个小时的时间看了《Python基础教程.第二版》的前八章,觉得数据结构列表和元组这块应该是和我以前掌握的语言(C++、Java)有所不同,有必要做些记录,一方面加深记忆,一方面避免以后从头开始在厚重的书籍里查使用方法。

1.序列

1
2
3
database1 = ['John Smith', 50]
database2 = [[1, 2], [3, 4], [5]]
database3 = [database1, database2]

列表的元组都属于序列,序列有一些通用的操作。字符串是字符组成的序列。

索引

1
2
3
4
5
>>> greeting = 'Hello'
>>> greeting[0]
'H'
>>> greeting[-1]
'o'

分片

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

分片提供两个索引作为边界,第一个在分片内,第二个不在,类似数学里“[)”的关系。[0:4:1]这样第三个可以实现步长分片。

序列加

1
2
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]

序列乘

1
2
>>> [1] * 3
[1, 1, 1]

成员资格

1
2
3
>>> users = ['John', 'foo', 'rew']
>>> 'foo' in users
True

长度最大最小判定

len(),min(),max()都是函数风格,容易理解,不赘述。

2.列表(可修改的序列)

序列的用法都能用,另一些操作方法也是一看即懂:

1
2
3
4
list()
x[1] = 2
del names[2]
name[2:] = list('ar')

常用函数:append();count();extend();index();insert();pop();remove();reverse();sort().

都是各个语言里的老套路的,看命名都懂的。。。

3.元组(不可变的序列)

1
2
3
4
>>> 1, 2, 3
(1, 2, 3)
>>> tuple([1, 2, 3])
(1, 2, 3)

元组的存在意义,

1.可在映射中当键使用;

2.作为内建函数和方法的返回值存在,不允许修改,只读的序列数据。

4.字典(内建的映射类型)

各种书里、教程里一堆废话,通俗讲,一大波键值对的集合而已。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
people = {
'Alice': {
'phone': '2341',
'addr': 'Foo drive 23'
},
'Beth': {
'phone': '9102',
'addr': 'Bar street 42'
},
'Cecil': {
'phone': '3158',
'addr': 'Baz avenue 90'
}
}

以上是一个嵌套的字典例子,还可以用dict()函数通过其他映射或序列建立字典,老套路操作:

  • len(d) 返回数量
  • d[k] 返回键k的值
  • d[k]=v k键上赋值
  • del d[k] 删除
  • k in d 包含、存在检查

常用方法,看名秒懂:clear(),get(),pop(),popitem(),

copy()(这个方法是浅拷贝,否则用deepcopy()),

fromkeys()(创建给定键的字典,值为None),

has_key()(3.0貌似没了?),

items()和iteritems()将字典以列表发回,后者返回迭代器对象,

keys()和iterkeys()同上理,

values()和itervalues()同上理,

setdefault()有就返回,无则更新,

update()以一个字典更新另一个字典。

就记录这么多了,掌握以上列表、元组、字典,基本就可以应付的python大部分日常处理了,相应的一些开源代码也能看个一知半解了!


版权声明:

本文由greedcoder创作、发表并维护,

采用自由分享-保留署名-非商用-禁止演绎4.0(CC BY-NC-ND 4.0)国际许可协议进行许可.

版权有一点,侵权不一定究!

本文永久链接:https://greedcoder.github.io/2016/08/21/python-base-data-structure/