Lesson 2-2(列表,元组)
2.3 列表
2.3.1 列表的创建方法
--- 使用方括号 [] ,括号中的元素之间使用逗号隔开。
>>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>> lis = ['H', 'e', 'l', 'l', 'o']
>>> lis
['H', 'e', 'l', 'l', 'o']
>>>
--- 使用函数list创建列表,可将任何序列作为list的参数。
>>> list('Hello worl!')
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', '!']
>>> lis = list("Hello world!")
>>> lis
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>> lis = list(['H', 'e', 'l', 'l', 'o'])
>>> lis
['H', 'e', 'l', 'l', 'o']
>>>
2.3.2 列表操作
--- 可对列表执行序列的通用操作,如索引,切片,拼接,复制。
--- 修改列表,通过索引指定要修改位置的元素,可修改为相似的元素,也可修改为不一致的元素。
>>> lis = list("Hello world!")
>>> lis
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>> lis[1] = 'a'
>>> lis
['H', 'a', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>> lis[1] = ['a', 'b', 'c']
>>> lis
['H', ['a', 'b', 'c'], 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>>
--- del 删除列表中的元素,也可删除整个列表。
>>> lis = [1, 2, 3, 4, 5]
>>> lis
[1, 2, 3, 4, 5]
>>> del lis[1]
>>> lis
[1, 3, 4, 5]
>>> del lis
>>> lis
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'lis' is not defined
>>>
--- 给切片赋值,可同时给多个元素赋值,也可将切片替换为长度不同的序列,也可不改变原列表的元素而插入新元素。
>>> lis = list("Hello world!")
>>> lis
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!']
>>> lis[-6:-1] = list("python")
>>> lis
['H', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n', '!']
>>> lis = list("Hello")
>>> lis[2:2] = list('abc')
>>> lis
['H', 'e', 'a', 'b', 'c', 'l', 'l', 'o']
>>>
--- 多重赋值,接收赋值的变量的数量必须和列表的长度严格相等。
>>> lis = [1, 2, 3]
>>> a,b,c = lis
>>> a
1
>>> b
2
>>> c
3
>>> a,b = lis
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>>
2.3.3 列表的方法
--- append,就地修改列表,将一个对象附加到列表末尾。(列表专属方法)
>>> lis = [1, 2, 3]
>>> lis.append(4)
>>> lis
[1, 2, 3, 4]
>>> lis = [1, 2, 3]
>>> lis.append([4, 5])
>>> lis
[1, 2, 3, [4, 5]]
>>>
--- insert,将一个对象插入列表,insert带有两个参数,第一个表示插入位置的索引,第二个表示要插入的对象。(列表专属方法)
>>> lis = [1, 2, 3]
>>> lis.insert(1,5)
>>> lis
[1, 5, 2, 3]
>>> lis = [1, 2, 3]
>>> lis.insert(1,[4, 5])
>>> lis
[1, [4, 5], 2, 3]
>>>
--- clear,清空列表中的元素,使其成为空列表。
>>> lis = [1, 2, 3]
>>> lis.clear()
>>> lis
[]
>>>
--- copy,使用常规的‘=’号赋值方式来复制,只是起到关联内存位置的作用,copy则是拷贝了一个副本到新的内存位置。
>>> lis_1 = [1, 2, 3]
>>> lis_2 = lis_1
>>> id(lis_1)
140151340507336
>>> id(lis_2)
140151340507336
>>> lis_2[0] = 5
>>> lis_2
[5, 2, 3]
>>> lis_1
[5, 2, 3]
>>>
>>> lis_1 = [1, 2, 3]
>>> lis_2 = lis_1.copy()
>>> id(lis_1)
140151340498312
>>> id(lis_2)
140151340507208
>>> lis_2[0] = 5
>>> lis_2
[5, 2, 3]
>>> lis_1
[1, 2, 3]
>>>
--- extend,同时将多个值附加到列表末尾。常规通过“+”运算符拼接两个列表,新的结果放到新的内存地址空间。而extend则在原内存地址空间把值附加进去。
>>> lis_1 = [1 ,2]
>>> lis_2 = [3 ,4]
>>> lis_1 + lis_2
[1, 2, 3, 4]
>>> lis_1
[1, 2]
>>> lis_1 = [1 ,2]
>>> lis_2 = [3 ,4]
>>> lis_1.extend(lis_2)
>>> lis_1
[1, 2, 3, 4]
>>>
--- count,计算指定元素在列表中存在的次数。
>>> lis = list('Hello world!')
>>> lis.count('e')
1
>>> lis.count('l')
3
>>> lis.count('o')
2
>>>
--- index,在列表中查找指定值第一次出现的位置的索引。
>>> lis = [1, 2, 3, 1, 2, 1]
>>> lis.index(2)
1
>>> lis.index(1)
0
>>>
--- remove,删除指定值在列表中第一次出现的元素。
>>> lis = [1, 2, 3, 1, 2, 1]
>>> lis.remove(2)
>>> lis
[1, 3, 1, 2, 1]
>>>
--- pop,删除指定索引位置的一个元素,并把删除元素返回(默认则删除列表末尾一个元素)。
>>> lis = [1, 2, 3, 4, 5]
>>> lis.pop(2)
3
>>> lis
[1, 2, 4, 5]
>>> lis.pop()
5
>>> lis
[1, 2, 4]
>>>
--- reverse,按相反的顺序排列列表中的元素。
>>> lis = [1, 2, 3]
>>> lis.reverse()
>>> lis
[3, 2, 1]
>>>
--- sort,对列表就地排序,按ASCII码表顺序,且列表中元素必须是同类型数据。
>>> lis = ['a', 'A', 'z', 'Z']
>>> lis.sort()
>>> lis
['A', 'Z', 'a', 'z']
>>> lis = [1, 2, 'a', 'A']
>>> lis.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
>>>
2.3.4 列表可用于循环
>>> for i in [1, 2, 3, 4]:
... print(i*2)
...
2
4
6
8
>>>
>>> lis = [1, 2, 3, 4, 5]
>>> for i in range(len(lis)):
... print("lis[" + str(i) + "]:" + str(lis[i]))
...
lis[0]:1
lis[1]:2
lis[2]:3
lis[3]:4
lis[4]:5
>>>
2.4 元组
--- 与列表一样,元组也是序列,唯一的差别是元组不能修改。
--- 元组的创建,使用逗号分隔,使用圆括号括起。(逗号很重要)
>>> (1, 2, 3)
(1, 2, 3)
>>> (1)
1
>>> (1,)
(1,)
>>> type((1))
<class 'int'>
>>> type((1,))
<class 'tuple'>
>>> 3 * (40 + 2)
126
>>> 3 * (40 + 2,)
(42, 42, 42)
>>>
--- 元组的创建,使用函数tuple,将一个序列作为参数,并将其转换为元组。如果参数已经是元组,则原样返回。
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple("Hello world!")
('H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!')
>>> tuple((1, 2, 3, 4, 5))
(1, 2, 3, 4, 5)
>>>
Lesson 2-2(列表,元组)的更多相关文章
- Python学习笔记(1):列表元组结构
Python的列表元组功能强大,令人印象深刻.一是非常灵活,二是便于集体操作.特别是以元组作为列表项的结构,和数据访问的结果能够对应起来,和习惯的二维表理解上也一致,有很多的用途. 以学习笔记(3)中 ...
- Python成长之路第二篇(2)_列表元组内置函数用法
列表元组内置函数用法list 元组的用法和列表相似就不一一介绍了 1)def append(self, p_object):将值添加到列表的最后 # real signature unknown; r ...
- python列表元组
python列表元组 索引 切片 追加 删除 长度 循环 包含 定义一个列表 my_list = [] my_list = list() my_list = ['Michael', ' ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- python中列表 元组 字典 集合的区别
列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...
- python基础(五)列表,元组,集合
列表 在python中是由数个有序的元素组成的数据结构,每一个元素对应一个index索引来隐式标注元素在列表中的位置.是python中最常用的一种数据类型.需要注意的是列表中可以有重复相同的数据. 列 ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- Python摸爬滚打之day04----基本数据类型(列表,元组)
1.列表 列表是可变的, 有序的数据类型,列表是按照添加顺序来保存的,可以存放各种数据类型. 1.1 列表的切片(同字符串) 1.2 列表的增删改查 注意: 列表是可以直接在列表上面进行操 ...
- python基础知识-04-字符串列表元组
python其他知识目录 内存,cpu,硬盘,解释器 实时翻译 编译器 :一次性翻译python2,3 除法,2不能得小数,3能得小数 1.字符串操作 1.1字符串操作startswith start ...
- 巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲 1. 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查操 ...
随机推荐
- maven 将第三方jar包转成maven的jar包
转载:https://blog.csdn.net/qq_40644583/article/details/81475135 1.首先你需要准备外部jar包 我的这个jar包现在以及下载解压到桌面 地址 ...
- ISOMAP和MDS降维
转载自https://blog.csdn.net/victoriaw/article/details/78497316 核心:测地线距离(dijstra最短路径获得).MDS降维 Isomap(Iso ...
- bugku web 头等舱
什么也没有. 不行,他肯定把重要的东西隐藏了起来,首先查看源代码 真的什么也没有 burp抓包,看是不是在头部里,嘿嘿找到了
- 【NLP】选择目标序列:贪心搜索和Beam search
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于R ...
- ILRuntime_NewbieGuide—进阶
进阶篇其实要求你应该拥有一个云服务器才有意思,但你用本地电脑也是一样的道理,只是没有这么有趣了. 笔者大一的时候,腾讯云搞活动,学生认证可以抢到1元的云主机,配置很低,但是平时练练手还是可以的,现在没 ...
- [转载] .NET 中可以有类似 JVM 的幻像引用吗?
近日发现一篇不错的文章,文中列举了一些 GC 场景,探讨了 在 .NET 中是需要实现像 JVM 的中的幻像引用.有人质疑其不切实际,也有像 Ayende 大神一言不合就自己做了个 demo. Do ...
- BZOJ2300[HAOI2011]防线修建——非旋转treap+凸包(平衡树动态维护凸包)
题目描述 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国上层现在还犹豫不决,到底该把哪些城市作为保护对象呢?又由于 ...
- goroutine的意义与实现
goroutine的意义与实现 goroutine存在的意义 goroutine是用于实现GO的并发的,而不是并行.此处的并发指的是一套管理.调度.执行goroutine的过程. 并行的性能更高,可以 ...
- SpringBoot+thymeleaf+security+vue搭建后台框架 基础篇(一)
刚刚接触SpringBoot,说说踩过的坑,主要的还是要记录下来,供以后反省反省! 今天主要讲讲 thymeleaf+security 的搭建,SpringBoot的项目搭建应该比较简单,这里就不多说 ...
- 【洛谷P2756】飞行员配对方案问题
题目大意:二分图匹配裸题. 题解:用网络流进行处理. 找配对方案的时候,采用遍历二分图左边的每个节点,找到不与源点相连,且正向边权值为 0,反向边权值为 1 的边,输出即可. 代码如下 #includ ...