Python-列表和元组

#一、 什么是数据结构
在计算机科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。
###1. Python 中核心数据结构分类

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

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

###2. 序列类型数据结构共有的特点:
序列类型中的元素都有对应的位置,这个位置叫偏移量或者索引

偏移量(索引)01234N-1
123456
偏移量(索引)-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. 使用元组的理由

  • 占用内存空间小
  • 元组内的值不会被意外的修改
  • 可作为字典的键
  • 函数的参数是以元组形式传递的
  • 命名元组有时候可以代替类的对象(面向对象的时候讲)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值