【Python基础教程第2版】——第二讲:列表和元组
引言:
什么是数据结构?
数据结果是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合。Python中最常用的数据结构是序列。
Python包含6种内建的序列:列表和元组(最常用:列表可以修改、元组则不能)、字符串、Unicode字符串、buffer对象和xrange对象。
一、序列的通用操作:
1、索引(从左到右以0开始不断递增;从右到做-1开始不断递减)
>>> greeting = 'hello'
>>> greeting[0]
'h'
>>> greeting[-1]
'o'
2、分片(开始元素为冒号前的,结束元素为冒号后的元素的前一个)
>>> greeting[0:3](0,1,2)
'hel'
>>> greeting[-3:-1](-3,-2)
'll'
>>> greeting[-3:](-3,到最后)
'llo'
>>> greeting[:]
'hello'
>>> greeting[1:3:2] #以2为步长,前面的都是默认以1为步长
'e'
3、序列相加(只有相同类型的才可以相加)
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello'+'world'
'helloworld'
>>> [1,2,3]+'world'
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
[1,2,3]+'world'
TypeError: can only concatenate list (not "str") to list
4、乘法
>>> 'python'*5
'pythonpythonpythonpythonpython'
>>> [56]*4
[56, 56, 56, 56]
>>> sequence = [None]*10 #空列表[None]
>>> sequence
[None, None, None, None, None, None, None, None, None, None]
5、成员资格(使用in运算符检查一个值是否在序列中)
>>> ll = '8uusdf'
>>> 'u' in ll
True
>>> 'we'in ll
False
>>> 'uus' in ll
True
>>> 'us' in ll
True
>>> 'ud' in ll
False
6、长度、最小值和最大值(len(序列名称)用的很多)
>>> numbers = [89, 56, 100]
>>> len(numbers)
3
>>> max(numbers)
100
>>> min(numbers)
56
二、列表:Python的“苦力”(这里讲列表的有用的专属的方法)
(一)基本操作
1、list方法(list方法将字符串转化成列表形式;join可以将列表通过某个符号连起来,如通过''空字符将字符列表连起来就是一个字符串)
>>> list1 = list('hello')
>>> list1
['h', 'e', 'l', 'l', 'o']
>>> ''.join(list1)
'hello'
>>>
2、元素赋值
>>> x = [1,2,3]
>>> x[1] = 6
>>> x
[1, 6, 3]
3、删除元素
>>> del x[1]
>>> x
[1, 3]
3、分片赋值
>>> name = list('i love you')
>>> name
['i', ' ', 'l', 'o', 'v', 'e', ' ', 'y', 'o', 'u']
>>> name[2:6] = list('hate')
>>> name
['i', ' ', 'h', 'a', 't', 'e', ' ', 'y', 'o', 'u']
>>> ''.join(name)
'i hate you'
以下为不替换任何元素情况下插入元素:
>>> numbers = [1,5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]
以下为不替换任何元素情况下删除元素:
>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:5] = []
>>> numbers
[1]
(二)列表方法——很重要(注意定义变量或者对象的名称,不要与内建函数或者某些类的方法同名,否则会导致调用失败)
1、append——在列表末尾追加新的对象(会改变原列表)
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
2、count——统计某元素在列表中出现的次数
>>> x = [[1,2],2,3,[1,2],1,1]
>>> x.count(1)
2
>>> x.count([1,2])
2
3、extend——一次性在末尾追加多个值(会改变原列表)
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
若使用+操作,则不会改变原列表的值:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a+b #生成新的列表
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]
4、index——从列表中找出某个值第一个匹配项的索引位置
>>> kk = ['what', 'is', 'your', 'name', '?']
>>> kk.index('is')
1
>>> kk2 = ['what', 'is', 'll', 'is', 'doudou']
>>> kk2.index('is') #注:列表中有两个'is',index会从左往右找,找到就直接返回,即找到第一个就停止,如果没有的话,就会返回错误
1
>>> kk2.index('wer')
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
kk2.index('wer')
ValueError: 'wer' is not in list
5、insert——将对象插入到列表中(参数为<插入位置,对象的值>,插入位置从0开始计算,想要在哪里插入,就直接写上该位置的索引值即可)
>>> numbers = [1,2,3,5,6,7]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
6、pop——移除列表中的一个元素,默认是最后一个
注:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法
>>> x = [1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0) #默认是最后一个,这里可以指定参数,为index索引值
1
>>> x
[2]
7、remove——移除列表中某个值的第一个匹配项(根据值,而不是index索引值)【与pop相反,没有返回值的原位置修改的方法】
>>> x = ['to', 'be', 'or', 'not', 'to', 'be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to']
>>> x.remove('234')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
x.remove('234')
ValueError: list.remove(x): x not in list
8、reverse——反向存放列表中的元素(改变列表而不返回值)
>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]
9、sort——排序方法:在原位置对列表进行排序
>>> x = [3,5,2,7,1,10,6]
>>> x.sort()
>>> x
[1, 2, 3, 5, 6, 7, 10]
若需要保留X的值,则可以先把X的副本赋给Y,然后对Y进行排序
>>> x = [3,5,2,7,1,10,6]
>>> y = x[:] #注,一定是通过这种方式赋值,不能直接y = x
>>> y.sort()
>>> y
[1, 2, 3, 5, 6, 7, 10]
>>> x
[3, 5, 2, 7, 1, 10, 6]
下面是直接y = x的情况:
>>> x = [3,5,2,7,1,10,6]
>>> y = x
>>> y.sort()
>>> y
[1, 2, 3, 5, 6, 7, 10]
>>> x
[1, 2, 3, 5, 6, 7, 10] #这里的y和x指向的是同一个列表了
也可以通过sorted()函数,代码如下:
>>> x = [3,5,2,7,1,10,6]
>>> y = sorted(x)
>>> y
[1, 2, 3, 5, 6, 7, 10]
>>> x
[3, 5, 2, 7, 1, 10, 6]
10、cmp——比较大小,cmp(x,y)中,x大于y会返回1;x小于y返回0
>>> cmp(42,32)
1
>>> cmp(99,100)
-1
>>> numbers = [5,2,9,7]
>>> numbers.sort(cmp)
>>> numbers
[2, 5, 7, 9]
三、元组
1、元组的定义:
>>> 1,2,3
(1, 2, 3)
>>> 42,
(42,)
>>> ()
()
>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)
2、tuple()函数 ——与列表的list方法类似,可以通过该函数将列表或者字符串转化成元组形式
>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')
>>> tuple((1,2,3))
(1, 2, 3)
3、元组的基本操作——与列表不同,没有列表的一堆方法,元组的基本操作(创建元组和访问元组元素)可参见其他类型的序列
>>> x = 1,2,3
>>> x[1]
2
>>> x[0:2]
(1, 2)
【Python基础教程第2版】——第二讲:列表和元组的更多相关文章
- Python基础教程学习笔记:第二章 列表和元组
1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...
- Python基础教程笔记——第2章:列表和元组
python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] ...
- Python基础教程-第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Python基础教程-第3版 备用下载:Python基础教程-第3版
- Python基础教程(第2版 修订版) pdf
Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...
- python基础知识3——基本的数据类型2——列表,元组,字典,集合
磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...
- Python基础学习参考(六):列表和元组
一.列表 列表是一个容器,里面可以放置一组数据,并且列表中的每个元素都具有位置索引.列表中的每个元素是可以改变的,对列表操作都会影响原来的列表.列表的定义通过"[ ]"来定义,元素 ...
- 【Python基础教程第2版】——第一讲:基础知识
1.长字符串:(用三引号如'''或者"""来引起来) >>> print """This is a very log st ...
- Python基础教程(第3版) 笔记(二)
1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...
- Python基础教程(第3版) 笔记(三)
1.9.1让脚本像普通程序一样在UNIX中运行脚本,只需将下面的代码作为脚本的第一行, 就可在UNIX中轻松运行脚本: #!/usr/bin/env python 要像普通程序一样运行脚本,还必须将其 ...
随机推荐
- shell脚本函数
不调用就不执行 调用就执行 调用时候的$1是指执行时候的参数1 调用之后的$是位置参数
- CSS3 的calc()方法的使用
calc()简单介绍 calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我, ...
- elastisSearch-aggregations
运行结果 统计每个学员的总成绩 这个是索引库使用通配符 优先在本地查询 只在本地节点中查询 只在指定id的节点里面进行查询 查询指定分片的数据 参考代码ESTestAggregation.java p ...
- 使用for...of 优点,代替for...in,forEach和for循环
来自阮一峰ES6标准: http://es6.ruanyifeng.com/#docs/iterator
- PyQt5系列教程(八)定时器QTimer的使用
软硬件环境 OS X EI Capitan Python 3.5.1 PyQt 5.5.1 前言 如果需要在程序中周期性地进行某项操作,比如检测某种设备的状态,就会用到定时器.本文就来看看PyQT5中 ...
- django-插件django REST framework,返回序列化的数据
官网: http://www.django-rest-framework.org 1.安装 pip install djangorestframework 2.在setting.py中注册app 中添 ...
- 关于有些邮件可以在http上发送成功但是https不能发送成功一个思路方法
关于有些邮件可以在http上发送成功但是https不能发送成功 其实如果是单纯的发送邮件,是没问题 今天一个客户出现这个问题,进行排查 他的邮件发送是任务制的, 是通过CURL请求的, 我估计她的CU ...
- delphi c++builder JSON 生成与解析 例子
json,System.JSON,REST.JSON JSON有两种数据结构,对象和数组. 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...} 数组 ...
- rssh RSA(非对称密钥)
rssh ,非对称密钥,分为密钥和公钥 ,密钥在对面机器,需要进入的文件中,公钥是放在本地机器上 import paramiko private_key = paramiko.RSAKey.from_ ...
- Spring Boot实践——Mybatis分页插件PageHelper的使用
出自:https://blog.csdn.net/csdn_huzeliang/article/details/79350425 在springboot中使用PageHelper插件有两种较为相似的方 ...