Python基础教程笔记 第二章
本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分。因为元组和列表很多方面都是一样的。
列表和元组的区别:列表可以被修改,元祖不可以被修改。
python包含的6种内建序列:列表、元组、字符串、Unicode字符串、buffer对象、xrange对象。
内建函数返回的是元组,因为元组是不可以被修改的。
列表的形式是[] ,元素之间通过逗号分隔。
序列(例如列表和元组)和映射(例如字典)是两类主要的容器。序列中的每个元素都有自己编号,而映射中的每个元素则有一个名字(也称为建)。
集合(set)既不是序列也不是映射类型
通用的序列操作:索引(indexing)、分片(slicing)、加(adding)、乘(multiply)、迭代(iteration)
迭代(iteration):依次对序列中的每个元素重复执行某些操作。
索引(indexing): 序列中所有元素都是有编号的,编号都是从0开始的。使用复数索引时,python会从右边,也就是最后一个元素开始计数,最后一个元素的位置为-1 。
例:
>>>'hello'[1]
>>> 'e'
>>> input('year:')[3]
year:2016
>>> '6'
python3用input代替了python2中的raw_input
分片(slicing):分片是通过冒号隔开两个索引来实现。第一个索引的元素包含在分片内,第二个不包含。
num[第一个索引:第二个索引:步长]
例如:
>>>num = [1,2,3,4,5,6]
>>>num[1:4:2]
[2,4]
第一个索引、第二个索引和步长都可以为负数。步长不能为0,为0的时候不执行。
当使用一个负数为步长的时候,必须让开始点(开始索引),大于结束点。
加(adding):列表和字符串无法连接在一起。只有两种相同类型的序列才能进行连接操作。
例如:[1,2,3] + [4,5,6] 结果为[1,2,3,4,5,6]
'hello ' + 'world' 结果为 'hello world'
[1,2,3] + 'hello' 错误
乘(multiply):用数字x乘以一个序列会生成新的序列,而新的序列中,原来的序列将会被重复x次
例如:'he' * 5 'hehehehehe'
[1] * 5 [1,1,1,1,1]
[]表示空列表,里面什么东西都没有
None是一个python内建值,它确切的含义是“这里什么都没有”
[None] * 5 [None,None,None,None,None]
python3中的//表示整除,/表示除,无论值是整型还是浮点型。python2中默认的/表示整除。
成员资格:in
为了检查一个值是否在序列中,可以使用in运算符。
例如:>>>st = ['as','df','gh'] (列表成员也可以是列表,这样查看的时候是查看一个列表是否在该列表中)
>>>'as' in st
True
>>>'bb' in st
False
>>> 'st' in 'string'
True
长度、最小值、最大值:len()、min()、max()
len()、min()、max()属于内建函数。
len()返回序列中所包含的元素个数。
min()和max()返回序列中的最小和最大的元素。
例如:>>> num = [3,4,2,5,1]
>>>len(num)
5
>>>max(num)
5
>>>min(num)
1
>>>max(2,3,5,1)
5
max()和min()的参数不仅可以是一个序列,还可以以多个数字直接作为参数。
列表:
list函数:可以将所有序列转换成列表。
例如:>>>list('hello')
['h','e', 'l', 'l', 'o']
注意:list使用于所有类型的序列,不只是字符串。
基本列表操作:
列表可以使用适用于序列的标准操作,例如索引、分片、链接、乘法。
元素赋值:可以直接用下标的方法进行赋值,不能对一个不存在的元素进行赋值。 x = [1,2,3] x[1] = 5 结果x=[1,5,3],赋值索引的下标不能超过2,超过2为不存在的元素。
删除元素:是用del语句来实现。del x[1] 结果x=[1,3] 。 del可以用于很多变量,不仅是列表,字典也是可以的。
分片赋值:它可以使程序一次为多个元素赋值。
使用分片时可以时使用与原序列不等长的序列将分片替换。
>>> name = list('perl')
>>> name[2:] = list('python')
>>> name
['p','e','p','y','t','h','o','n']
分片赋值可以在不需要替换任何元素的情况下插入新的元素
>>> num = [1,5]
>>> num[1:1] = [2,3,4]
>>> num
[1,2,3,4,5]
与之类似,分片也可以删除元素
>>> num[1:4] = []
>>> num
[1,5]
当然,上述操作也可以加上步长。
列表方法:append、count、extend、index、insert、pop、remove、reverse、sort、高级排序。
append:用于在列表末尾追加新的对象。 lst = [1,2,3] lst.append(4) 结果lst = [1,2,3,4] , 列表本身被修改。
count:统计某个元素在列表中出现的次数。[[1,2], [1,1],1,1,[2,3]].count([1,1]) 结果为1, [[1,2], [1,1],1,1,[2,3]].count(1) 结果为2
extend:可以在列表的尾部一次性追加另外一个序列中的多个值。a=[1,2,3] b=[4,5,6] a.extend(b) 结果a = [1,2,3,4,5,6] 。列表本身的值被修改。如果使用+号连接两个列表,也可以得到相同的值,但是列表本身没有被修改,只是返回值是相同的。a + b 返回的结果是[1,2,3,4,5,6], 但是a依旧是[1,2,3]
index:从列表中找出某个值第一个匹配项的索引位置。当没有这个元素时会发生异常。st = ['qw','er','er','er','sd'] st.index('er') 结果为1
insert:用于将对象插入到列表中。st.insert(2,'a') 结果st = ['qw','er','a','er','er','sd'] , 列表本身进行的修改。
pop:会移除列表中的一个元素,默认是最后一个元素,并且返回这个元素的值。x=[1,2,3,4] x.pop() 结果4 x.pop(0) 结果 1 。pop是唯一一个既能修改列表又能返回元素值得列表方法。
remove:用于移除列表中某个值的第一个匹配项。st.remove('er') 结果st = ['qw','a','er','er','sd'] 。该方法是一个没有返回值的原位置改变方法。
reverse:将列表中的元素反向存放。a.reverse() a=[3,2,1]。 该方法也改变了列表但是不返回值(就像remove和sort)
sort:该方法用于在原位置对列表进行排序。原来的列表被改变,不是简单的返回一个已经排序的列表副本。该方法没有返回值。
>>> x = [3,1,2,4]
>>> x.sort() ; x
[1,2,3,4]
>>> y = x.sort() 错误,该方法没有返回值。y的值是None
如果只是想获得一个已排序的列表副本,原列表仍然保留,可以只用下面的方法:
>>> y = x[:] 这里不能简单的使用y=x 来赋值,这样是令y也指向x的值,x改变时y也随之改变。x[:]是包含了x所有元素的分片,这是一种很有效率的赋值整个列表的方法
>>> y.sort() 使用副本来排序,不会修改原始的列表。
也是使用sorted函数:
>>> y = sorted(x)
此时,y的值为[1,2,3,4] ,x的值仍为[3,1,2,4]
sorted 函数不仅可以用于列表,还可以用于任何序列,总是返回一个列表:
>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']
高级排序:sort方法有两个可选的参数key和reverse.
如果想使排序结果为逆序,可以调节参数x.sort(reverse = True)即可。
如想像根据长度来排序,可以使用len 即 x.sort(key = len)
元组:不可变序列
如果你使用逗号隔开了一些值,那么你就自动创建了一个元组。
>>> 1,2,3
(1,2,3)
元组大部分是通过圆括号括起来的,空元组可以用没有包含内容的两个括号表示()。
包含一个值得元组,不是简单的一个值就可以,而是要在这个值后面加上一个逗号。
>>> 3 * (42)
126
>>> 3 * (42,)
(42, 42, 42)
tuple函数:可以将一个序列作为参数,转换成元组。如果参数是元组,那么该参数会被原样返回。
>>> tuple([1,2,3])
(1,2,3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1,2,3)
Python基础教程笔记 第二章的更多相关文章
- Python基础教程笔记 第一章
/ 表示整除,当导入_future_模块中的version时,/ 表示正常的的除法, 此时可用//表示整除,不论数字是整型还是浮点型,都可以用//表示整除. ** 表示幂次方 例如 2**3 ...
- 《Python基础教程》第二章:列表和元组(1)
列表可以修改,元组则不能 字符串就是一个由字符组成的序列 使用分片操作来访问一定范围内的元素,分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内的,而第二个不包含在分片内. 如果分 ...
- 《Python基础教程》第二章:列表和元组(2)
list函数可以将字符串转换为列表 ' '.join(somelist)可以将列表转换为字符串 从列表中删除元素可以使用del语句来实现 方法是与对象有紧密联系的函数:对象.方法(参数) append ...
- 《python基础教程(第二版)》学习笔记 文件和素材(第11章)
<python基础教程(第二版)>学习笔记 文件和素材(第11章) 打开文件:open(filename[,mode[,buffering]]) mode是读写文件的模式f=open(r' ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- 《python基础教程(第二版)》学习笔记 函数(第6章)
<python基础教程(第二版)>学习笔记 函数(第6章) 创建函数:def function_name(params): block return values 记录函数:def f ...
- 《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)
<python基础教程(第二版)>学习笔记 语句/循环/条件(第5章) print 'AB', 123 ==> AB 123 # 插入了一个空格print 'AB', 'CD' == ...
- 《python基础教程(第二版)》学习笔记 字典(第4章)
<python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),(' ...
- 《python基础教程(第二版)》学习笔记 字符串(第3章)
<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:格式化输出字符 ...
随机推荐
- 题解 CF656G 【You're a Professional】
又是一道假黑题 它教会我们不要看难度标签 虽然这道题的数据范围很小,用cin能过,但我还是要讲一下快读 快读嘛,顾名思义,就是 快速读入 的意思 有同学就会问了,快速读入的原理是什么? 答:它的原理其 ...
- 散列表的ASL计算
题目: 已知关键字序列为{30,25,72,38,8,17,59},设散列表表长为15.散列函数是H(key)=key MOD 13,处理冲突的方法为二次探测法Hi= ( H(key) + di )m ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- django-redis缓存记录
对于站点缓存,我们使用redis这款key-value数据库.Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径.Redis的数据类型都是基于基本数据结构的 ...
- zabbix 密码忘记了如何恢复
1.进入数据库 2.使用zabbix的数据库 use zabbix: 3.查看表信息 show tables; 4.搜索users表 select * from users; 5.修改userid为1 ...
- python笔记-dict字典的方法
#!/usr/bin/env python #-*- coding:utf-8 -*- #打印0001-9999的数字 for i in range(9999): s = "%04d&quo ...
- docker-compose 使用
Docker提供一个容器编排工具------>Docker Compose,它允许用户在一个模板(YAML格式)中定义一组相关联的应用容器,这组容器会根据配置模板中的"--link&q ...
- Node 操作MySql数据库
1, 需要安装 MySQL 依赖 => npm i mysql -D 2, 封装一个工具类 mysql-util.js // 引入 mysql 数据库连接依赖 const mysql = re ...
- Vue钩子函数生命周期实例详解
vue生命周期简介 Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁 ...
- Django2.2使用mysql数据库pymysql版本不匹配问题的解决过程与总结
前置条件 django版本:2.2.1 python版本:3.6.6 mysql版本:mysql-community8.0.15 问题 在搭建django项目,配置mysql数据库时遇到无法迁移数据库 ...