python用list存放tuple_菜鸟学python之list和tuple

list

list 是一种有序的集合,可以随时添加和删除其中的元素。list是一种对象,当我们在创建变量,并且赋值的过程可以理解成这样

shopping=['apple','orange']

1)创建一个list对象,对象里面同时也有很多变量名;

2)[0]位置变量存储'apple'对象的地址,[1]位置变来那个存储'orange'对象地址

3)创建一个shopping变量,存储list对象的地址信息;

list常用操作

1访问元素

1.1用索引来访问 list 中每一个位置的元素,记得索引是从 0 开始的>>> shopping=['apple','orange']

>>> shopping[0]

'apple'

>>> shopping[1]

'orange'

>>> shopping[2]

Traceback (most recent call last):

File "", line 1, in 

shopping[2]

IndexError: list index out of range

因此通过索引访问元素一定要记得不能越界,不然就会发生错误。有两种更好的方法访问最后一个元素>>> shopping[len(shopping)-1]    #先计算长度,再减一

'orange'

>>> shopping[-1]           #默认从后往前计数

'orange'

1.2索引访问list中子list的元素['apple', 'orange', ['r', 'u']]

>>> shopping[2]

['r', 'u']

>>> shopping[2][1]

'u'

可以理解成shopping变量找到了['apple', 'orange', ['r', 'u']]对象

shopping[2]是存在于对象中用来存储['r','u']对象的地址的变量

shopping[2]此时找到了['r','u']shopping[2][0]就是['r','u']对象中存储'r'地址的变量

2 增加元素

2.1 append从尾部插入>>> shopping.append('banana')

>>> shopping

['apple', 'orange', 'banana']

2.2 insert指定位置插入>>> shopping.insert(1,'banana')    #指定位置,前面的数字代表插入后元素所在位置

>>> shopping

['apple', 'banana', 'orange', 'banana']

>>> id(shopping[1])

43203456

>>> id(shopping[3])        #可以看出,插入同一个值时,没有增加新对象,只是引用了源地址

43203456

2.3 extend从尾部插入多个元素>>> shopping.extend([7,8])

>>> shopping

['apple', 7, 8]

3 删除元素

3.1 pop弹出>>> shopping.pop()  #按顺序删除,不需要指定具体对象

'banana'

>>> shopping

['apple', 'banana', 'orange']

>>> shopping.pop(1)  #也可以指定位置,必须使用索引号

'banana'

>>> shopping.pop(-1)

'orange'

>>> shopping

['apple']

3.2 remove指定内容删除>>> shopping

['apple', 7, 8]

>>> shopping.remove(7)

>>> shopping

['apple', 8]

3.3 del删除

del是一个语句,不是一个列表的方法。可以删list对象中的变量,也可以删除list的变量>>> del shopping[1]

>>> shopping

['apple']

>>> del shopping

>>> shopping

Traceback (most recent call last):

File "", line 1, in 

shopping

NameError: name 'shopping' is not defined

tips:这三种删除方法,都可以删除list对象中的变量,即使list对象中也有子列表;但是只有del可以删除进行操作的对象变量;

3.4 修改元素

直接使用赋值法>>> shopping[1]=2

>>> shopping

['apple', 2, 8]

tuple

tuple 一旦初始化就不能修改,比如同样是列出shopping的物品单:>>> shopping=('apple','orange')

>>> shopping

('apple', 'orange')

现在,shopping 这个 tuple 不能变了,它也没有 append(),insert()这样的方法。其他获取元素的方法和 list 是一样的,你可以正常地使用shopping[0] , shopping[-1] ,但不能赋值成另外的元素。

不可变的 tuple 有什么意义?因为 tuple 不可变,所以代码更安全。如果可能,能用 tuple 代替 list 就尽量用 tuple

tips:

只有 1 个元素的 tuple 定义时必须加一个逗号 , ,来消除歧义:>>> t=(1)

>>> t

1

>>> t = (1,)

>>> t

(1,)

Python 在显示只有 1 个元素的 tuple 时,也会加一个逗号 , ,以免你误解成数学计算意义上的括号

之前提到过tuple是不可变对象>>> shopping[1]=(2)

Traceback (most recent call last):

File "", line 1, in 

shopping[1]=(2)

TypeError: 'tuple' object does not support item assignment 对象不支持赋值

tuple对象中的用来存储地址的变量名一旦固定就不能改变,当我们尝试赋值一个不可变对象给tuple内部变量时就会发生错误;那是不是赋值一个可变对象,就可以改变元素的值呢>>> t=('a','b',['a','b'])

>>> t

('a', 'b', ['a', 'b'])

>>> id(t[2][1])

6326368

>>> id(t[1])   #t[1]和['a','b']对象中的[1]引用同一个对象 'b'

6326368

>>> t[2][0]='x'

>>> t

('a', 'b', ['x', 'b'])

小结

不可变对象内部变量不可变

改变的其实是可变list对象中的元素,而tuple中指向list的地址没有发生改变,有点类似于系统编程中操作系统实现不一样,但是给上层提供的api是一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值