list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。

1.内置数据类型,列表List

>>> appleVersion = ['apple1','apple2','apple3']
>>> appleVersion
['apple1', 'apple2', 'apple3'] >>> len(appleVersion)
3 >>> appleVersion[0]
'apple1' >>> appleVersion[1]
'apple2' >>> appleVersion[2]
'apple3' >>> appleVersion[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of rang

倒序打印

>>> appleVersion[-1]
'apple3' >>> appleVersion[-2]
'apple2' >>> appleVersion[-3]
'apple1' >>> appleVersion[-4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

  

新增

>>> appleVersion.append('orange')
>>> appleVersion
['apple1', 'apple2', 'apple3', 'orange']

  
插入

>>> appleVersion.insert(1,'banana')
>>> appleVersion
['apple1', 'banana', 'apple2', 'apple3', 'orange']

 
删除末尾/删除索引i

>>> appleVersion.pop()
'orange'
>>> appleVersion
['apple1', 'banana', 'apple2', 'apple3']
>>> appleVersion.pop(1)
'banana'
>>> appleVersion
['apple1', 'apple2', 'apple3']

 
赋值替换

>>> appleVersion[1]='orange'
>>> appleVersion
['apple1', 'orange', 'apple3']

  
List嵌套

>>> orange=['orange1','orange2']
>>> apple=['apple1',123,orange,True]
>>> apple
['apple1', 123, ['orange1', 'orange2'], True]
>>> len(apple)
4

  

2. tuple和list非常类似,但是tuple一旦初始化就不能修改,不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:

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

>>> lemon=('lemon1','lemon2','lemon3')
>>> lemon
('lemon1', 'lemon2', 'lemon3') >>> lemon1=()
>>> lemon1
()
数字1
>>> lemon2=(1)
>>> lemon2
1
一个原素
>>> lemon3=(1,)
>>> lemon3
(1,) >>> lemon4=('a','b',['A','B'])
>>> lemon4[2][0]='X'
>>> lemon4[2][1]='Y'
>>> lemon4
('a', 'b', ['X', 'Y'])

  
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple,那就必须保证tuple的每一个元素本身也不能变

Python list 和 tuple 使用小记的更多相关文章

  1. Python之创建tuple和“可变”的tuple

    Python之创建tuple tuple是另一种有序的列表,中文翻译为" 元组 ".tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了. 同样是表示班里 ...

  2. Python中list,tuple,dict,set的区别和用法

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List ...

  3. [转] Python list、tuple、dict区别

    from: http://www.cnblogs.com/Michael-Kong/archive/2012/07/11/2585840.html Dictionary 是 Python 的内置数据类 ...

  4. python基本数据类型——tuple

    一.元组的创建与转换: ages = (11, 22, 33, 44, 55) ages = tuple((11, 22, 33, 44, 55))ages = tuple([]) # 字符串.列表. ...

  5. python list和tuple

    list列表简介:列表是python的基础数据类型之⼀ ,其他编程语⾔也有类似的数据类型. 比如JS中的数组, java中的数组等等. 它是以[ ]括起来, 每个元素⽤' , '隔开⽽且可以存放各种数 ...

  6. Python中list,tuple,dict,set的区别和用法(转)

    原文地址:http://www.cnblogs.com/soaringEveryday/p/5044007.html Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个 ...

  7. python 数据类型 之 tuple 元组

    python 3.6.5 元组的特性和定义 与列表类型 只不过 [  ] 改成了() 特性: 1.不可变(元组本身不可变,但是可以存可变类型的element){猜测因为可变element的地址不可变而 ...

  8. python list 和 tuple, dict 用于迭代代价

    #!/usr/bin/env python #-*- coding:utf-8 -*- import time start = time.time() for i in range(1000000): ...

  9. python 元组(tuple)

    面试python我想每个人都会被问一个问题,就是python中的list和tuple有什么区别? 一般情况下,我会回答,list元素可变,tuple元素不可变(书上或者其他的博客都是这么写的),一般情 ...

随机推荐

  1. [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络)

    [Android实例] Android Studio插件-自动根据布局生成Activity等代码1.4 (开源)(申明:来源于网络) 地址:http://www.eoeandroid.com/thre ...

  2. Tif文件合并类

    using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...

  3. vins-mono调试教程

    https://www.cnblogs.com/Jessica-jie/p/6950604.html

  4. [No0000102]JavaScript-基础课程2

    var bob = new Object(); bob.age = ; // 这一次我们已经添加了一个方法,setAge bob.setAge = function (newAge){ bob.age ...

  5. CMSampleBufferRef转换

    参考链接:https://blog.csdn.net/shenyi0106/article/details/47004039 https://blog.csdn.net/jeffasd/article ...

  6. PHP之PSR

    PHP的PSR (PSR 称为PHP Standard Recommendations) PSR参考网址:http://www.php-fig.org/psr 在PHP中,有5个编码标准分类: ①.P ...

  7. iOS-方法之+ initialize 与 +load

    Objective-C 有两个神奇的方法:+load 和 +initialize,这两个方法在类被使用时会自动调用.但是两个方法的不同点会导致应用层面上性能的显著差异. 一.+ initialize ...

  8. 使用Git,如何忽略不需要上传的文件(配置文件)

    步骤1:在目录下,选择GIt Bash Here 2.输入命令 : git update-index --assume-unchanged 文件名 3.再输入指令 git  status 查看修改文件 ...

  9. NOIP2009靶形数独

    题目描述: 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“ ...

  10. vue.cli项目中src目录每个文件夹和文件的用法

    assets文件夹是放静态资源:components是放组件:router是定义路由相关的配置:view视图:app.vue是一个应用主组件:main.js是入口文件: