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 列表的基本使用的更多相关文章

  1. Python2和Python3中列表推导式的不同

    Python2和Python3中列表推导式的不同 python2 >>> x = 'my girl' >>> lst = [x for x in 'hello'] ...

  2. python3.7[列表] 索引切片

    python3.7[列表] 索引  切片 排序     #### 列表.sort 永久排序   sorted(列表) 临时排序   ### >>> print(sorted(a))[ ...

  3. python3中列表、元组、字典的增删改查说明详解

    python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之 ...

  4. python2和python3关于列表推导的差别

    看下面两个例子: python2的环境:列表中的同名变量名被替换了 >>> x = 'my precious' >>> dummy = [x for x in 'A ...

  5. Python3 数据类型-列表

    序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. 索引如下图: 列表命名(list): 组成:使用[]括起来,并且 ...

  6. Python3中列表、字典、元组、集合的看法

    文首,我先强调一下我是一个弱鸡码农,这个随笔是在我学习完Python3中的元组.字典.列表,集合这四种常见数据的数据类型的一些感想,如果有什么不对的地方欢迎大家予以指正.谢谢大家啦 回归正题:这篇随笔 ...

  7. 005 列表以及append,extend方法

    定义一个列表: number=[,'changhao','常浩',5.2] 往这个列表里面添加单一新值(类型无限制),需要使用append方法. 例如: number.append() number. ...

  8. Python3 的列表

    1:列表: Python的列表比C语言的数组强大的多,数组只能存放相同类型的数据,而列表则像一个大集装箱可以存放整形.浮点型.字符串.对象等 2:创建列表的方法 #创建一个普通列表 list1=[1, ...

  9. Python3中列表字符串转数字

    比如我们有个列表: number = [']; 如果我们需要将列表里的元素转换为数字呢?最常用的大家可能会想到使用列表推导式: number = ['] number = [int(x) for x ...

随机推荐

  1. 刷PTA这一周的感悟

    在慕课上报名了浙江大学的<数据结构>这门课,主讲人陈越老师,何钦铭老师,两位老师讲的很好,课后有配套的PTA可以用来做题,练习. 最近在PTA上刷题,发现自己代码实现能力是真的差劲,一开始 ...

  2. MUI使用h5+进行召唤各大APP应用市场调用启动的包名和方式

    转载自:https://blog.csdn.net/u012442504/article/details/87367153 // 扩展API加载完毕后调用onPlusReady回调函数 documen ...

  3. luoguP1445 [Violet]樱花

    链接P1445 [Violet]樱花 求方程 \(\frac {1}{X}+\frac {1}{Y}=\frac {1}{N!}\) 的正整数解的组数,其中\(N≤10^6\),模\(10^9+7\) ...

  4. ionic icon(图标)

    https://www.runoob.com/ionic/ionic-icon.html ionic 也默认提供了许多的图标,大概有 700 多个,针对 Android 和 iOS 有不同的样式.

  5. 【GDOI2014模拟】雨天的尾巴

    题目 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 根拔起,以及田地里 ...

  6. apply()的使用

    apply()方法的另一种使用,就是可以代替一次for循环 在封装 document.getElementsByTagName的时候,需要把伪数组转为一个真的数组,其是也不是真的数组 typeof 出 ...

  7. window7下docker toolbox 启用数据卷报错: Error response from daemon: invalid mode:

    场景:希望把d:\dockerShare文件夹作为数据卷 ,和docker中的centos镜像生成的容器关联. 原来的命令: docker run -d -it --name=edc-centos7 ...

  8. jAVA基础 提高文件复制性能之多线程复制文件

    利用IO流中的随机访问文件 RandomAccessFile 和文件通道 FileChanne 复制文件可大大提高文件的读写效率,在此基础上利用多线程复制文件使其性能更优.因线程的个数可根据文件的大小 ...

  9. CF1081G Mergesort Strikes Back

    题目大意: 给定\(n\),\(k\),\(mod\),求随机排列在\(k\)层归并排序下逆序对的期望. 题解 考虑这\(k\)层归并会把序列分成若干个块. 这些块内的顺序是原序列的相对顺序,我们要把 ...

  10. Java Interger类,两对整数明明完全一样,为何一个输出true,一个输出false

    package text; public class MethodOverload { public static void main(String[] args) { Integer i1=100; ...