这一节,我来简单讲讲python自带的数据结构。

列表(list)

列表是常用的python数据结构,类似于C语言的数组,用来存储多个元素,与之不同的是,C语言的数组中的元素的类型是相同的,而列表可以是不同类型的元素。

创建一个列表可以用一对方括号[]扩起的用逗号,分隔的值(元素)来表示:

  1. >>> list1 = ['a', 'b', 123, 1.2]

我们可以打印这个列表:

  1. >>> print(list1)
  2. ['a', 'b', 123, 1.2]

访问列表中的元素可以用列表名[索引]的方式,就像是操作一个变量一样。例如:

  1. >>> print(list1[0]) # 输出第一个元素
  2. a
  3. >>> print(list1[1]) # 输出第二个元素
  4. b
  5. >>> list1[0] = 123 # 为第一个元素赋值
  6. >>> print(list1[2] + list1[3]) # 用元素运算
  7. 124.2
  8. >>>

注意:在计算机中,索引一般是从0开始的,也就是说第一个元素的索引是0,依次类推。“索引” 还有另一种称呼——“偏移量”,一个元素的偏移量就是该元素相对于首元素位置的偏移,如第2个元素相对于首元素的偏移为1,第3个元素的偏移量为2……因为第1个元素相对于第1个元素的偏移量显然0,所以“偏移量”这个称呼更有利于记住首元素是0号元素,所以作者更倾向于这个称呼,读者请随意。

访问列表中的元素要注意索引(偏移量)是否越界,比如上面4个元素的列表,如果访问第5个元素将会报错

  1. >>> print(list1[4])
  2. Traceback (most recent call last):
  3. File "<stdin>", line 1, in <module>
  4. IndexError: list index out of range
  5. >>>

上面英文的大致意思是:列表的索引超出范围,刚刚创建的列表只有4个元素,不存在第5元素,当然会报错了。

我们可以创建一个空列表:

  1. >>>list1 = list() # 或者用 list1 = []

可以添加元素

  1. >>> list1 = list()
  2. >>> list1
  3. []
  4. >>> list1.append('hello') # 添加元素至列表尾部
  5. >>> list1.append(123)
  6. >>> list1.append(['a', 1]) # 嵌套一个列表
  7. >>> list1
  8. ['hello', 123, ['a', 1]]
  9. >>>

还可以删除元素:

  1. >>> list1
  2. ['hello', 123, ['a', 1]]
  3. >>> del list1[2]
  4. >>> list1
  5. ['hello', 123]
  6. >>> list1.remove('hello')
  7. >>> list1
  8. [123]
  9. >>>

我们可以用下一节要讲到的for循环语句来遍历列表:

  1. list1 = [ 'hello', 123, 456.0 ]
  2. # 循环将列表中的元素赋值给变量e
  3. for e in list1:
  4. print(e)

输出如下:

  1. hello
  2. 123
  3. 456.0

元组(tuple)

元组的用法和列表类似,列表可以改变,如赋值、添加元素、删除元素等,但是元组不可以改变,所以也就不能进行赋值、添加、删除等操作。

元组的用法如下:

  1. >>> tuple1 = (123, 'a', 'b')
  2. >>> tuple1
  3. (123, 'a', 'b')
  4. >>> tuple1 = 123,456,'hello'
  5. >>> tuple1
  6. (123, 456, 'hello')
  7. >>> print(tuple1[1])
  8. 456
  9. >>>

上面的例子中表明圆括号()不是必要的,其实逗号,才是元组所用的语法符号,但是创建一个空元组的时候用一对圆括号()而不是一个逗号,,代码如下:

  1. >>> tuple1 = , # 错误
  2. File "<stdin>", line 1
  3. tuple1 = , # 错误
  4. ^
  5. SyntaxError: invalid syntax
  6. >>> tuple1 = () # 正确
  7. >>> tuple1
  8. ()
  9. >>> tuple1 = tuple() # 也可以这样创建空元组

之前将多个变量同时赋值时,有一句a, b, c = 1, 2, 'hello',这其实是把一个元组1, 2, 'hello赋值给三个变量a, b, c,像这样把一个元组赋值给多个变量的操作称为 “解包”,列表也是可以进行解包的^_^,元组解包操作代码如下:

  1. >>> tuple1
  2. (123, 456, 'hello')
  3. >>> a, b, c = tuple1
  4. >>> a
  5. 123
  6. >>> b
  7. 456
  8. >>> c
  9. 'hello'
  10. >>>

元组同样可以用for语句来遍历:

  1. tuple1 = ( 'hello', 123, 456.0 )
  2. for e in tuple1:
  3. print(e)

输出:

  1. hello
  2. 123
  3. 456.0

字典(dict)

列表按索引访问元素,索引只能是整数,而有时候我们需要一种更方便的方式操作元素,如:电话簿按照姓名查找电话号码,字典按照单词查找意思。像这样用不是整数的“索引”来访问元素的数据结构叫做字典,在C语言中也叫“关联数组”,字典的“索引”称为 “键”“关键字”,元素称为 “值”“键值”,字典中的每对键和值称为 “项”

创建一个字典的方法是,用一对花括号{}扩起一系列用逗号分隔的键值对(项),其中键值对的表示方法是键:值,即{ 键1:值1, 键2:值2, 键3:值3},代码如下:

  1. >>> dict1 = {'hello':'你好', 'python':'一门计算机语言'}
  2. >>> dict1
  3. {'hello': '你好', 'python': '一门计算机语言'}
  4. >>> dict2 = dict(hello='你好', python='一门计算机语言') # 也可以这样
  5. >>> dict2
  6. {'hello': '你好', 'python': '一门计算机语言'}
  7. >>>

一些简单的操作:

  1. >>> dict1['hello']
  2. '你好'
  3. >>> dict1['python']
  4. '一门计算机语言'
  5. >>> dict1['abc'] = 123 # 创建一个项
  6. >>> dict1
  7. {'hello': '你好', 'python': '一门计算机语言', 'abc': 123}
  8. >>> del dict1['hello'] # 删除键为'hello'的项
  9. >>> dict1
  10. {'python': '一门计算机语言', 'abc': 123}
  11. >>> dict1 = {} # 空字典, 或者用 dict1 = dict()
  12. >>> dict1
  13. {}
  14. >>>

也可用for语句遍历字典,但是for语句遍历的是字典的键,得到了键自然就可以得到值:

  1. dict1 = {'hello':'你好', 'python':'一门计算机语言'}
  2. for k in dict1:
  3. print(k,' =>', dict1[k])

输出如下:

  1. hello => 你好
  2. python => 一门计算机语言

本节只是简单了解python中常用的数据结构,不作深入探究,同时引出循环语句,接下来详细介绍编程中十分重要的语法——循环语句……

python教程(二)·数据结构初探的更多相关文章

  1. Python基础二. 数据结构、控制流、运算符、真值测试

    一.概述 数据结构上广义上有两种,单一类型和集合类型 单一类型,表示一种对象 集合类型,表示包含多种对象 Python 中的内建的数据类型有str.list.tuple.dict.set.number ...

  2. 简明python教程五----数据结构

    python中有三种内建的数据结构:列表.元组和字典 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.在python中,每个项目之间用逗号分隔. 列表中的项目应该包括在方 ...

  3. 简明python教程二-----对象

    物理行:是你在编写程序时所看见的. 逻辑行:是Python看见的单个语句. 默认的,python希望每行都只使用一个语句,这样使得代码更加易读. 如果你想要在一个物理行中使用多于一个逻辑行,用分号“: ...

  4. 写给.NET开发者的Python教程(二):基本类型和变量

    从本文开始,我们就要正式了解Python的语法特性了,这章主要介绍基本类型和变量,开始之前先介绍下Python中的标准输入输出. 标准输入输出 前文举过TwoSum问题的例子,但是没有讲到标准输入输出 ...

  5. 简明python教程五----数据结构(下)

    引用 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!即,变量名指向你计算机中存储那个对象的内存. print 'Simple Assignment' sho ...

  6. PySide——Python图形化界面入门教程(二)

    PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...

  7. python教程(零)·前言

    本教程是作者根据自己学习python的经验写下的,一来是想将经验分享给对python同样感兴趣的小白(大神请忽略),二来是想借此加深本人对python的理解,温故而知新. 学习基础 本教程面向的读者, ...

  8. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  9. (原+转)简明 Python 教程:总结

     简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容 ...

  10. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

随机推荐

  1. linux(centos、ubuntu)网卡配置文件不生效

    今天遇到个问题,服务器上ifcfg配置了eth0文件,但是通过ifcfg命令检查发现网卡IP配置并未生效. 然后通过如下配置修正: ubuntu: # vim /etc/default/grub在”G ...

  2. January 27 2017 Week 4 Friday

    Procrastination is the thief of time. 拖延是时光之贼. Procrastination is the thief of time, besides, it is ...

  3. GO语言(一)G语言自虐

    package main import . "fmt" //notice 1 type testInt func(uint32) bool func isOdd(integer u ...

  4. plus.webview.create mui.openWindow区别是什么呢

      create 只是创建这个webview,但是不显示,而且同一个页面.同一个id你甚至能重复创建多个(严重消耗性能,作死...),其实mui里面已经封装了这个方法 mui.preload(),并且 ...

  5. 如何用SAP Cloud for Customer的手机App创建销售订单

    第一次启动App,设置一个初始化的pin code: 输入C4C tenant的url,用户名和密码: 登录进系统后,找到Sales Order工作中心: 可以看到系统里很多已有的销售订单了.点击屏幕 ...

  6. 如何在两个月的时间内发表一篇EI/SCI论文-我的时间管理心得

    在松松垮垮的三年研究生时期,要说有点像样的成果,也只有我的小论文可以谈谈了.可能有些厉害的角色研究生是丰富而多彩的,而大多数的同学在研究生阶段可能同我一样,是慢悠悠的渡过的,而且可能有的还不如我,我还 ...

  7. AsyncTask使用实例,异步加载图片

    在上一篇,详细介绍了AsynTask的基础知识.没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4892310.html 那么在这篇文 ...

  8. Linux修改权限命令chmod用法详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  9. UVa 10384 - The Wall Pushers

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  10. 总结PHP删除字符串最后一个字符的三种方法

    一.前言 从数据库中select()读取一对多的信息时,经常需要将取出的数组用某个特定的字符分割,然后拼接成字符串. 常见的语法格式: foreach ($arr as $key => $val ...