美文网首页Python
3、List和tuple

3、List和tuple

作者: 代码充电宝 | 来源:发表于2019-04-26 08:43 被阅读3次

(1)List

  • Python内置的一种数据类型是列表list
  • Python是动态语言,list可以包含各种数据类型
  • list是一种有序的集合,可以随时添加和删除其中的元素
L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]
print L
# 空list
empty_list = []
  • 长度
L = ['Michael', 100, True]
len(L)
  • 正序索引
L = [95.5,85,59]
print L[0]
print L[1]
print L[2]
print L[3]
  • 倒序索引
L = [95.5, 85, 59]
print L[-1] #倒数第一
print L[-2] #倒数第二
print L[-3] #倒数第三
print L[-4] #倒数第四,越界报错
  • append默认添加到尾部
>>> L = ['Adam', 'Lisa', 'Bart']
>>> L.append('Paul')
>>> print L
['Adam', 'Lisa', 'Bart', 'Paul']
  • insert()
  • 第一个参数是索引号,第二个参数是待添加的新元素:
>>> L = ['Adam', 'Lisa', 'Bart']
>>> **L.insert(0, 'Paul')**
>>> print L
['Paul', 'Adam', 'Lisa', 'Bart']
  • pop(index)
  • 不写默认删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。
  • L.pop(1)删除指定位置
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L.pop()
'Paul'
>>> print L
['Adam', 'Lisa', 'Bart']

>>> L.pop(1)
'Lisa'

>>> print L
['Adam', 'Bart']
  • 反转
L = ['Adam', 'Lisa', 'Bart']
L.reverse()
print(L) # ['Bart', 'Lisa', 'Adam']
  • 赋值
>>> L[2] = 'Paul'
>>> print L

L = ['Adam', 'Lisa', 'Paul']
>>> L[-1] = 'Paul'
  • list和tuple快速赋值
a,b = [1,2]
c,d = (3,4)
print(a,b)
print(c,d)

# ValueError: too many values to unpack (expected 2)
# L = [1,2,3]
# e,f = L

(2)tuple

  • tuple也是一种列表,但不可变,用小括号表示
>>> t = ('Adam', 'Lisa', 'Bart')
  • tuple不可变,所有没有 append()、insert()、pop(),也不能被赋值成别的元素
>>> t[0] = 'Paul'

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
  • 空tuple
t = ()
print t # ()
  • 单元素tuple
  • ()既可以表示tuple,又可以表示运算时的优先级,(1)被解释成了整数1而不是单元素tuple(1)
  • 有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义:
>>> t = (1)
>>> print t
1
>>> t = (1,)
>>> print t
(1,)
  • tuple不可变的理解
>>> t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])

不是说tuple一旦定义后就不可变了吗?怎么现在又变了?
别急,我们先看看定义的时候tuple包含的3个元素:

image.png

当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:

image.png

表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。

tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

相关文章

  • 3、List和tuple

    (1)List Python内置的一种数据类型是列表list Python是动态语言,list可以包含各种数据类型...

  • Python 基础学习二

    list 与 tuple 1、list和tuple都是pathon内置的列表。list可变,tuple不可变。定义...

  • 【原】Python学习笔记——基础篇

    List和Tuple类型 List用[],Tuple用() , Python 规定,单元素 tuple 要多加一个...

  • 8.Python编程:tuple的指向不变性

    list 和 tuple 在python 中list和tuple的最大的区别要分清:list是有序可变的列表,tu...

  • Python 基础语法

    基础数据结构及语法 序列 sequence 元组(tuple) 和 表(list) tuple和list的主要区别...

  • 元组

    1 元组:(tuple) tuple:()相比较列表list:[] 元组和列表都是一种有序集合,(0,2,3,5,...

  • list和tuple

    list tuple:一旦初始化,不能修改,在定义时tuple元素必须确定下来

  • list和tuple

    list 当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个...

  • list和tuple

    list list是一种有序的集合,可以随时添加和删除其中的元素。 tuple

  • list和tuple

    list:[ ] 关键词:[ ]、列表、集合、有序、可变、可嵌套、索引 Python内置的一种数据类型是列表:li...

网友评论

    本文标题:3、List和tuple

    本文链接:https://www.haomeiwen.com/subject/ksvxnqtx.html