Python 列表和元组

一、 什么是数据结构

在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。

1. Python 中核心数据结构分类

  • 序列类型: 字符串、列表、元组
  • 映射类型: 字典
  • 集合: set()

在 Python中列表、元组、字典、集合都称为容器。

2. 序列类型数据结构共有的特点:

序列类型中的元素都有对应的位置,这个位置叫偏移量或者索引

偏移量(索引) 0 1 2 3 4 N-1
1 2 3 4 5 6
偏移量(索引) -N -N(N-1) -4 -3 -2 -1

二、列表

1. 列表的特性介绍

  • 列表内的元素是可变的。

列表的元素可以是 Python 的任何类型的数据和对象
如:字符串、列表、元组、字典、集合、函数、类

  • 列表中的具有相同值的元素允许出现多次

如:[1, 2, 1, 1, 1, 1, 3, 3, 2]

2. 创建列表

# 推荐使用 [] 高效
例:
>>> li = []
>>> cc = [ 'chen', 'chao' ]

# 从其他类型转换 list() 
>>> list('hello ')
['h', 'e', 'l', 'l', 'o', ' ']

# 从字符串转换 split() 
>>> 'c.h.e.n'.split('.')
['c', 'h', 'e', 'n']
嵌套的列表

列表中可包含 python 中任何类型的元素(对象),当然也可以包括一个或多个列表

li = [['one', 'two', 'three'], [1, 2, 3]]

3. 列表的基本操作

3.1 取值

没有嵌套的列表取值

>>> li = ['one', 'two', 'three']
>>> li[0]
'one'
>>>

嵌套的列表取值

>>> li = [['one', 'two', 'three'], [1, 2, 3]]
>>> li[0][2]
'three'
>>>
3.2 切片

同字符串的切片一样,详情参考字符串教程中的切片
简单示例:

>>> li_f = [ 'insert', 'append','extend', 'remove', 'pop', 'sort', 'sorted']

# 获取全部元素
>>> li_f[:]
['insert', 'append', 'extend', 'remove', 'pop', 'sort', 'sorted']

# 反转
>>> li_f[::-1]
['sorted', 'sort', 'pop', 'remove', 'extend', 'append', 'insert']
>>>
3.3 必会方法
  • len() 方法是一个内置函数,可以统计序列类型的数据结构的长度。
>>> li = [5, 4, 3, 2, 1, 0]
>>> n = len(li)
>>> print(n)
6
  • in 判断元素是否存在于列表中。
>>> li = ['chen', 123, '456']
>>> '456' in li
True

>>> 456 in li
False

>>> if 'chen' in li:
...     print('presence')
... 
presence
  • append() 向列表的最后位置,添加一个元素,只接收一个参数。
>>> li = ['chen', 123, '456']
>>> li.append(789)
>>> li
['chen', 123, '456', 789]
  • insert() 向原列表的指定位置插入一个元素,接收两个参数,第一个是索引号,第二个是要插入的元素。
>>> li = ['chen', 123, '456']
>>> li.insert(1, 'chao')
>>> li
['chen', 'chao', 123, '456']

>>> li.insert(-1, 789)
>>> li
['chen', 'chao', 123, 789, '456']
  • extend() 可以把一个序列类型中的每个元素追加到原列表中,接收的参数是一个序列类型的数据(字符串,列表)。
>>> li1 = ['chen', 'chao']
>>> li2 = [123, 'test', '456', 789]

>>> li1.extend(li2)

>>> li1
['chen', 'chao', 123, 'test', '456', 789]

>>> li2
[123, 'test', '456', 789]
>>> 
  • remove() 移除列表中某个指定的元素,没有返回值,并且假如有多个相同值的元素存在,每次只会移除排在最前面的那个元素
>>> li = [123, 123, 456, '123']

>>> li.remove(123)
>>> li
[123, 456, '123']

>>> li.remove('123')
>>> li
[123, 456]
  • pop() 从原列表中删除一个元素,并且把这个元素返回。接收零个或一个参数,参数是偏移量,int 类型。
>>> li = [123, 456, 789, '123']

# 删除列表的最后一个元素
>>> li1 = li.pop()
>>> li1
'123'

>>> li
[123, 456, 789]

# 删除列表的倒数第二个元素
>>> li2 = li.pop(-2)
>>> li2
456

>>> li
[123, 789]
  • 循环列表
>>> li = [123, 456, 789, '123']
>>> for i in li:
...     print(i)
... 
123
456
789
123

三、元组

1 元组特性介绍

  • 元组和列表一样,也是一种序列。
  • 唯一的不同是,元组是相对不可变的

2 高效创建元组

t1 = () 创建 空 元素的元组 t1

创建非空元素的元组是用逗号,而不是用小括号

>>> t1 = (3)
>>> t2 = 3,
>>> type(t1)
<class 'int'>

>>> type(t2)
<class 'tuple'>

tuple() 可以对其他序列类型的数据转换为元组。

>>> c = 'chen'
>>> n = [1, 2, 3]
>>> tuple(c)
('c', 'h', 'e', 'n')

>>> tuple(n)
(1, 2, 3)

>>> t1 = [1, 2, 3, ['a', 'b']]
>>> tuple(t1)
(1, 2, 3, ['a', 'b'])

更改元组数值

>>> t1 = (1, 2, 3, ['a', 'b'])

>>> t1[3][0]=0
>>> t1
(1, 2, 3, [0, 'b'])

3. 循环元组

>>> t = ('chen', 123, 456)
>>> for i in t:
...     print(i)
... 
chen
123
456

4. 使用元组的理由

  • 占用内存空间小
  • 元组内的值不会被意外的修改
  • 可作为字典的键
  • 函数的参数是以元组形式传递的
  • 命名元组有时候可以代替类的对象(面向对象的时候讲)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 列表: 前面已经用了很多次列表,可以看出列表的功能是比较强大的。本节将讨论列表不同于元组和字符串的地方:列表的内容...
    泷汰泱阅读 1,360评论 0 1
  • 1.1.列表定义 列表是python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;...
    Rolle_Wang阅读 1,045评论 0 0
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,727评论 0 5
  • 在Python里面有三种引用类型,分别为列表、元组和字典。我们本篇文章里只包含列表和元组的部分,字典由于使用广泛,...
    Q科技阅读 553评论 0 0
  • 要使人们行动起来,三个要素必不可少。第一,充分的动机;第二,完成这一行为的能力;第三,促使人们付诸行动的触发。以上...
    元气少女V_5842阅读 504评论 0 0

友情链接更多精彩内容