list和tuple的使用

list

Python内置的一种数据类型列表:list

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

比如列出办理所有同学的名字,就可以用一个list表示:

>>> classmates = ['小明',‘小民’,‘小敏’]
>>> classmates
['小明',‘小民’,‘小敏]
变量classmates 就是一个list,用len() 函数可以获得list元素的个数:
>>> len(classmates)
3

用索引来访问list中每一个位置的元素,记得索引是冲0 开始的:

>>> classmates[0] '小明'
>>> classmates[1]
'小民'
>>> classmates[2]
'小敏'
>>> classmates[3]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range

当索引超出了范围时,Python会报一个IndexError 错误,所以要确保索引不要越界,记得最后一个元素的索引是len(classmate)-1

如果需要取最后一个元素,除了计算索引位置外,还可以用-1 做索引,直接获取最后一个元素:

>>> classmates[-1]
'小敏'
以此类推,可以获取倒数第2个、倒数第3个:
>>> classmates[-2]
'小民'
>>> classmates[-3]
'小明'
>>> classmates[-4]
Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range

这里倒数第四个就越界了。

list是一个可变的有序表,所以可以往list中追加元素到末尾:

>>> classmates.append('小米')
>>> classmates
['小明',‘小民’,‘小敏’,'小米']

也可以把元素插入到指定的位置,比如索引号为1 的位置:

>>> classmates.insert(1,'小小')
>>> classmate
['小明',‘小小’,‘小民’,‘小敏’,‘小米’]

要删除list末尾的元素,用pop() 方法:

>>> classmates.pop()
'小米'
>>> classmates
['小明',‘小小’,‘小民’,‘小敏’,]

要删除指定位置的元素,用pop(i) 方法,其中i 是索引位置:

>>> classmates.pop(1)
'小小'
>>> classmates
['小明','小民','小敏']

如果要把某个元素换成别的元素,可以直接赋值给对应的索引位置:

>>> classmastes[1]='小安'
>>> classmates
['小明','小安','小敏']

list里面的元素的数据类型(字符串、整数、布尔值)也可以不同,比如:

>>> L=['小小',123,Ture]
>>> L
['小小',123,Ture]

list元素也可以是另一个list,比如:

>>> S = ['python','java',[123,'php'],'asp']
>>> S
['python', 'java', [123, 'php'], 'asp']
>>> len(S)
4

要注意s 只有4个元素,其中s[2] 又是一个list,如果拆开写就更容易理解了:

>>> p = ['123','php']
>>> S = ['python','java',p,'asp']

要拿到'php' 可以写p[1] 或者s[2][1] ,因此s 可以看成是一个二维数组,类似的还有三维、四维.....数组,不过很少用到。

如果一个list中一个元素也没有,就是一个空的list,它的长度为0:

>>> L = []

>>> len(L)

0

tuple

另一种有序列表叫元组:tulpe。tulpe和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

>>> classmates = ('Michael','Bob','Tracy')

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

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

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

>>> t = (1,2)

>>> t

(1,2)

如果要定义一个空的tuple,可以写成() :

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

但是要定义一个只有1个元素的tuple,如果你如下这么定义:

>>> t = (1)

>>> t

1

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

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

>>> t = (1,)

>>> t

(1,)

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

最后来看一个“可变的”tuple:

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

这个tuple定义的时候有3个元素,分别a ,b 和一个list,不是说tuple一旦定义后就不可边了吗?怎么后来又变了?

我们先看看定义的时候tuple包含的3个元素:分别a ,b 和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了呢?

别急我们先看看定义的时候tuple包含的3个元素:

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

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素,tuple一开始指向的list并没有改成别的list,所以tuple所谓的“不变”的含义是:tuple的每个元素指向永远不变。"即指向a ,就不能改成指向b ,指向一个list,就不能该成指向其他对象,但是指向的这个list本身是可以变的!"

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

小练习:请问以下变量哪些是tuple类型:

a = ()

b = (1)

c = [2]

d = (3,)

e = (4,5,6)

# -- coding: utf-8 --
L = [ ['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa']]
# 打印Apple:
print(?)
# 打印Python:
print(?)
# 打印Lisa:
print(?) 

文章转载【廖雪峰官方网站】:https://www.liaoxuefeng.com/wiki/1016959663602400/1017092876846880

Python基础之list和tuple的使用的更多相关文章

  1. python基础——使用list和tuple

    python基础——使用list和tuple list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用 ...

  2. python基础数据类型--元组(tuple)

    python基础数据类型--元组(tuple) 一.元组的定义和特性 定义:与列表相似,只不过就是将[ ] 改成 ( ) 特性:1.可以存放多个值 2.不可变 3.按照从左到右的顺序定义元组元素,下标 ...

  3. python基础之元组(Tuple)、字典(Dictionary)详解

    元组定义 元组是另一个数据类型,类似于List(列表). 元组用”()”标识.内部元素用逗号隔开.但是元素不能二次赋值,相当于只读列表. 举例: tuple = ( ‘abcd’, 786 , 2.2 ...

  4. python基础之 list和 tuple(元组)

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  5. 廖雪峰网站:学习python基础知识—list和tuple(二)

    1.list """ Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. """ c ...

  6. Python基础教程-List和Tuple

    List Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如: >>> classmates = ['Michael',' ...

  7. Python基础:使用list & tuple

    list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. tuple 小结 list和tuple是Python内置的有序集合,一个可变,一个不 ...

  8. Python基础数据类型list,tuple

    列表是有序的可变的元素集合.列表中的每个元素可以使任何数据类型,包括列表本身. 列表生成 Python3中的列表通过定义,for循环,列表推导式等几种方式生成 定义 直接通过中括号`[]`定义一个列表 ...

  9. python基础之元祖tuple

    元祖是只读列表,不可哈希,可循环查询,可切片*儿子不能改,孙子可更改--元祖里面单个元素不能更改---元祖内列表可更改增:tu1+tu2查:tu1[index] tu1[start_index:end ...

随机推荐

  1. 个人冲刺(六)——体温上报app(二阶段)

    冲刺任务:完成主页面功能 MainActivity.java package com.example.helloworld; import android.app.AlertDialog; impor ...

  2. Jmeter接口参数化<自动化>(csv文件)管理测试用例以及断言

    1.创建相关线程组(不解释) 2.创建相应的请求(在请求中设置变量) 下面截图中①②③④⑤⑥⑦皆可以设置为变量 3.新建CSV文件 将请求中设置的变量为明确了解每个字段的含义(皆可以将变量填写到列表的 ...

  3. STM32内存知识

    在了解STM32内存之前需要了解 MCU 的型号和MDK 中的.map 文件,很多刚学习 stm32 时都不会过多的去了解 MCU 的选型,是在太枯燥了.这里在从新了解一下,久了就熟悉了. 一.STM ...

  4. Swoole一键操作基于阿里云的RDS数据库迁移+OSS文件搬迁

    传统的数据库搬迁思路是把数据库表的结构及数据都查询出来,然后通过循环进行数据结构重组拼接.然后导出!数据量少的话,这样当然是没毛病.当数据量太大的时候,服务器的内存开销就吃不住了,很容易炸掉,导致服务 ...

  5. SAP IDOC-Segment E1EDP19 Document Item Object Identification

    PO创建时,通过IDOC EDI 接口自动创建SO 案例. BD54 配置逻辑系统 SCC4 给集团分配逻辑系统  SM59 新建RFC 链接 WE21 创建IDOC 处理端口 we20 创建合作伙伴 ...

  6. SAP OLE download to excel

    REPORT RSDEMO01 NO STANDARD PAGE HEADING. * this report demonstrates how to send some ABAP data to a ...

  7. SAP Html viewer

    1 *&---------------------------------------------------------------------* 2 *& Report RSDEM ...

  8. Linux shell脚本算术运算和逻辑运算

    算术运算 默认不支持算数运算.所以需要特定的语法来完成, shell进行算数运算的工具: let declare (())或$(())或$[] bc let: 格式: let var=算术表达式 例如 ...

  9. 【Python基础教程】三种常用、效率最高的Python字符串拼接方法

    python字符串连接的方法,一般有以下三种: **方法1:**直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39; ...

  10. NC16564 [NOIP2012]借教室

    NC16564 [NOIP2012]借教室 题目 题目描述 ​ 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借 ...