[Python3] 005 列表的基本使用
1. 列表概述
- 一组有顺序的数据的组合
2. 创建列表
# 例1
list1 = [] # 创建空列表
print(type(list1)) # type() 是内置函数,负责打印出变量的类型
print(list1)
- 输出结果
<class 'list'>
[]
创建列表还有别的方法,具体可参看我的 [Python3] 006 ~ [Python3] 008。
# 例2
list2 = [100] # 创建带值的列表
print(type(list2))
print(list2)
- 输出结果
<class 'list'>
[100]
# 例3
list3 = [2,3,1,4,6,4,6] # 创建带多个值的列表
print(type(list3))
print(list3)
- 输出结果
<class 'list'>
[2, 3, 1, 4, 6, 4, 6]
# 例4
list4 = list() # 使用 list() 内置函数
print(type(list4))
print(list4)
- 输出结果
<class 'list'>
[]
3. 列表常用操作
- 访问
- 使用下划线索引
- 与 C 一致,从 0 开始
- 分片
- 截取列表的一部分或全部
- “左闭右开”
(1) 访问列表
# 例5
list5 = [3, 2, 5, 4, 7, 1, 8]
print(list5[3]) # 下标访问
print(list5[0])
print(list5[6])
- 输出结果
4
3
8
# 例6
list6 = [3, 2, 5, 4, 7, 1, 8]
print(list6[7]) # 报错
- 输出结果
IndexError……list index out of range
索引错误(省略号部分我省略了)列表索引超出范围。
(2) 分片操作
1) 正向操作
# 例7
list7 = [0, 1, 2, 3, 4, 5, 6] # 直观起见,让元素对应其下标号
# 截取的范围相当于一个左闭右开的区间
print(list7[1:4]) # 指截取第 1 号位到第 3 号位的元素
print("-"*10) # 文艺的分割线
# 下标值可以为空
print(list7[:]) # 此时为截取全部
print(list7[:5]) # 此时为截取第 0 号元素到第 4 号元素
print(list7[3:]) # 此时为截取第 3 号元素到最后一个元素
- 输出结果
[1, 2, 3]
----------
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]
[3, 4, 5, 6]
# 例8
list8 = [0, 1, 2, 3, 4, 5, 6] # 直观起见,让元素对应其下标号
print(list8) # 作为参考
print(list8[2:6])
print(list8[2:6:1]) # 同上一条,1 表示下标增幅,且是默认增幅
print(list8[2:6:2]) # 下标增幅可以是非零自然数
print(list8[2:6:0]) # 报错
- 输出结果
[0, 1, 2, 3, 4, 5, 6]
[2, 3, 4, 5]
[2, 3, 4, 5]
[2, 4]
ValueError……slice step cannot be zero
报错原因:切片增幅不能为零。
# 例9
list9 = [0, 1, 2, 3, 4, 5, 6] # 直观起见,让元素对应其下标号
print(list9[5:10]) # 下标超出范围,超出部分自动忽略
print(list9[7]) # 查看有没有因为上一句开辟空间
- 输出结果
[5, 6]
IndexError…… list index out of range
报错说明没有开辟新的空间。
2) 反向操作
# 例10
list10= [0, 1, 2, 3, 4, 5, 6] # 直观起见,让元素对应其下标号
print(list10[6:2:-1]) # 下表增幅也可以是负数,但切片要反过来写,依旧“左闭右开”
print(list10[-5:-1]) # -1 就是从右边数第一个
print(list10[-1:-5]) # 看看能不能这样改变方向
print(list10[-1:-5:-1]) # 上一条的可行方案
- 输出结果
[6, 5, 4, 3]
[2, 3, 4, 5]
[]
[6, 5, 4, 3]
3) 内置函数 id() 加入队伍
- id() :显示一个变量或者数据的”身份证“
# 例11
n1 = 100
n2 = 200
print(id(n1))
print(id(n2))
- 输出结果
140726871718752
140726871721952
虽然数字长得很像,但是它们是两个不同的数字。
这类输出结果不同机子显示不一样,但肯定是两个不同的数字。
# 例12
n1 = 100
n3 = n1
print(id(n1))
print(id(n3))
- 输出结果
140726871718752
140726871718752
此时两个 id 一样。
# 例13
# 借助 id() 判断出分片是新生成一份数据还是合用一份数据
list13 = [0, 1, 2, 3, 4, 5, 6]
list13_1 = list13[:]
list13_2 = list13_1
print(id(list13))
print(id(list13_1))
print(id(list13_2))
- 输出结果
2756687271240
2756687343048
2756687343048
由此可得 1 分片是新生成一份数据;2 赋值是合用一份数据。
# 例14
# 接着 例13 继续
list13[1] = 10
print(list13)
print(list13_1)
print('-'*20) # 文艺的分割线
list13_1[1] = 20
print(list13_1)
print(list13_2)
- 输出结果
[0, 10, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
--------------------
[0, 20, 2, 3, 4, 5, 6]
[0, 20, 2, 3, 4, 5, 6]
同样能得出 例13 的结论。
具体来说,list13 是独立的,list13_1 和 list13_2 共用一份地址,它们的内容自然相同。
[Python3] 005 列表的基本使用的更多相关文章
- Python2和Python3中列表推导式的不同
Python2和Python3中列表推导式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in 'hello'] ...
- python3.7[列表] 索引切片
python3.7[列表] 索引 切片 排序 #### 列表.sort 永久排序 sorted(列表) 临时排序 ### >>> print(sorted(a))[ ...
- python3中列表、元组、字典的增删改查说明详解
python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之 ...
- python2和python3关于列表推导的差别
看下面两个例子: python2的环境:列表中的同名变量名被替换了 >>> x = 'my precious' >>> dummy = [x for x in 'A ...
- Python3 数据类型-列表
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 索引如下图: 列表命名(list): 组成:使用[]括起来,并且 ...
- Python3中列表、字典、元组、集合的看法
文首,我先强调一下我是一个弱鸡码农,这个随笔是在我学习完Python3中的元组.字典.列表,集合这四种常见数据的数据类型的一些感想,如果有什么不对的地方欢迎大家予以指正.谢谢大家啦 回归正题:这篇随笔 ...
- 005 列表以及append,extend方法
定义一个列表: number=[,'changhao','常浩',5.2] 往这个列表里面添加单一新值(类型无限制),需要使用append方法. 例如: number.append() number. ...
- Python3 的列表
1:列表: Python的列表比C语言的数组强大的多,数组只能存放相同类型的数据,而列表则像一个大集装箱可以存放整形.浮点型.字符串.对象等 2:创建列表的方法 #创建一个普通列表 list1=[1, ...
- Python3中列表字符串转数字
比如我们有个列表: number = [']; 如果我们需要将列表里的元素转换为数字呢?最常用的大家可能会想到使用列表推导式: number = ['] number = [int(x) for x ...
随机推荐
- kettle imestamp : Unable to get timestamp from resultset at index 22
在做ETL的时候,连接MySQL读取含有timestamp类型的表,出现如下错误: 经Google,据说是MySQL自身的问题.解决方法也很简单,在Spoon的数据库连接中,打开选项,加入一行命令参数 ...
- MongoDB的分页排序
我们已经学过MongoDB的 find() 查询功能了,在关系型数据库中的选取(limit),排序(sort) MongoDB中同样有,而且使用起来更是简单 首先我们看下添加几条Document进来 ...
- linux运维、架构之路-HAProxy反向代理
一.HAProxy介绍 专业反向代理,支持双机热备支持虚拟主机,配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端节点出现故障, HAProxy会自动将该服务器摘除,故障恢复 ...
- 阿里云 Serverless 应用引擎(SAE)发布 v1.2.0,支持一键启停、NAS 存储、小规格实例等实用特性
近日,阿里云 Serverless 应用引擎(SAE)发布 v1.2.0版本,新版本实现了以下新功能/新特性: 一键启停开发测试环境:企业开发测试环境一般晚上不常用,长期保有应用实例,闲置浪费很高.使 ...
- ipcloud上传裁切图片
主页: <!doctype html> <html> <head> <meta charset="utf-8"> <meta ...
- Internet History, Technology, and Security(week3)——History: The Web Makes it Easy to Use
前言: 上周学习了第一个网络NSFnet,美国国家科学基金会(National Science Foundation,简称NSF)在全美国建立了6个超级计算机中心所互联的一个网络,这周继续学习网络的发 ...
- 3D Computer Grapihcs Using OpenGL - 12 Rotation Matrix
为了证明我们上节渲染出来的是一个立方体而不是一个平面,我们决定将它旋转一定角度,这样我们就需要一个旋转矩阵(也属于ModelTransformMatrix的一部分) 上一节我们的ModelTransf ...
- Last Defence
Given two integers A and B. Sequence S is defined as follow: • S0 = A •S1 = B • Si = |Si−1 − Si−2| f ...
- js中switch语句不执行
参考http://www.jb51.net/article/54393.htm switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式, ...
- VMware Workstation 14 Pro安装教程(详细)
VMware Workstation 14 Pro安装教程(详细) 话不多说,直接上图,需要的拿走. 下载地址:https://download3.vmware.com/software/wkst/f ...