Python学习随笔二:list和tuple

本文详细介绍了Python中列表(list)和元组(tuple)的基本概念、常用操作方法及应用场景。包括如何创建、访问、修改这两种数据类型,以及它们之间的区别。

写在前面

本博客是基于廖雪峰Python教程基础上的自我整理和消化,欢迎大家批评指正。第二节内容将介绍:

  • list
  • tuple

list

基本形式

Python内置的一种数据类型是列表,由于Python是一种动态语言,事先并不需要对变量进行申明,在Python中依据数据区分数据类型,如

  • 整数 1, 34
  • 浮点数 3.14
  • 字符串 ‘3.14’
    而以[ ]包裹起来的即为列表,各个元素之间以逗号分隔,如[‘Ada’,’Sherry’,’Frank’]
>>>list('turbo')#根据字符串创建列表,应对字符串不可改
['t', 'u', 'r', 'p', 'l', 'e']

list方法

作为Python的“苦力”,list有很多的内置方法

长度len()

用len()函数可以获得list元素的个数

>>>books = ['Python', 'C++', 'Java', 'C', 'C#', 'matlab']
>>>len(books)
6

利用索引访问列表元素

用索引来访问list中每一个位置的元素,索引是从0开始的,也可以从后往前访问(负数),还可以分片访问(第一个索引是需要提取部分的第一个元素的编号,第二个索引是分片之后剩下部分的第一个元素的编号,第三个索引是步长):

>>> books[0]
'Python'
>>> books[5]
'matlab'
>>> books[-1]
'matlab'
>>> books[2:5:2]
['Java', 'C#']
>>> books[-3:]
['C', 'C#', 'matlab']
>>> books[:3]
['Python', 'C++', 'Java']

追加元素至末尾append()

list是一个可变的有序表,所以,可以往list末尾追加新的对象

>>> books.append('Android')
>>> books
['Python', 'C++', 'Java', 'C', 'C#', 'matlab', 'Android']

也可在指定位置赋值或分片赋值,赋值元素的长度、类型等都没有要求

>>>name = list("Pear")
>>> name[1:] = list("ython")#不等长赋值
>>> name
['P', 'y', 't', 'h', 'o', 'n']
>>> name[1:1] = [1, 2, 3]#插入元素的另一种表达
>>> name
['P', '1', '2', '3', 'y', 't', 'h', 'o', 'n']

插入insert()和删除pop()

在指定位置插入

>>> books.insert(1,'Labview')
>>> books
['Python', 'Labview', 'C++', 'Java', 'C', 'C#', 'matlab', 'Android']

删除元素
pop()是有返回值的,返回弹出的元素

>>> books.pop()
'Android'
>>> books
['Python', 'Labview', 'C++', 'Java', 'C', 'C#', 'matlab']
>>> books.pop(1)
'Labview'
>>> books
['Python', 'C++', 'Java', 'C', 'C#', 'matlab']

寻找匹配值index()与移除remove()

从列表中找出某个值第一个匹配项的索引位置

>>> books.index('Python')
0

移除列表中某个值的第一个匹配项

>>> books.remove('matlab')
>>> books
['Python', 'C++', 'Java', 'C', 'C#']

其他


count()统计某个元素在列表

>>> books.count("Java")
1

extend()在列表的末尾一次性追加另一个序列中的多个值
reverse()将列表中的元素反向存放
sort()原地排序

tuple

基本形式

tuple和list非常类似,但是tuple一旦初始化就不能修改,以()包裹逗号分隔,或简单以逗号分隔

>>> (1,2,3)
(1, 2, 3)
>>> 1,2,3
(1, 2, 3)
>>> 'Android','ios','Symbian'
('Android', 'ios', 'Symbian')

tuple的不变性

tuple没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用tuple里的元素,但不能赋值成另外的元素。

这样的意义在于,因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来

*p.s.*tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>>  t[2][1] = 'Y'

>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

只有一个元素的tuple
但是,要定义一个只有1个元素的tuple,不能这么定义:

>>> t = (1)
>>> t
1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。

所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t
(1,)

Python在显示只有1个元素的tuple时,也会加一个逗号,,以免误解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值