欢迎关注「issnail」

“一起学习,一起成长!”

与字符串不同的是,元组和列表并不要求所有元素的种类相同,每个元素都可以是任何python类型的对象。列表可变,赋值后可插入或删除其中的元素。元组不可变,赋值后不可更改。

1.列表1.1使用[]或list[]创建列表

使用[]创建列表:

>>>empty=[]

>>>weekdays=['Monday','Tuesday','Wednesday']

使用list()创建列表:

>>>another_empty_list=list() #返回空列表

1.2使用list()将其他数据类型转换成列表

将一个字符串转换成了由单个字母组成的列表

>>>list('cat')

['c','a','t']

将一个元组转换成了列表

>>>a_tuple=('ready','fire','aim')

>>>list(a_tuple)

['ready','fire','aim']

使用split()可以依据分隔符将字符串切割成由若干子串组成的列表:

>>>birthday='1/6/1952'

>>>birthday.split('/')

['1','6','1952']

>>>splitme='a/b//c/d///e'

>>> splitme.split('/')

['a', 'b', '', 'c', 'd', '', '', 'e'] #返回空串元素

>>>splitme='a/b//c/d///e'

>>> splitme.split('//')

['a/b', 'c/d', '/e']

1.3使用[offset]获取元素

和字符串一样,通过偏移量可以从列表中提取对应位置的元素:

>>> marxes=['Groucho','Chico','Harpo']

>>> marxes[0]

'Groucho'

>>> marxes[1]

'Chico'

>>> marxes[2]

'Harpo'

负偏移量代表从尾部开始计数:

>>> marxes[-1]

'Harpo'

>>> marxes[-2]

'Chico'

>>> marxes[-3]

'Groucho'

1.4包含列表的列表

列表中的列表是一个元素

>>> small_birds=['hummingbird','finch']

>>> extinct_birds=['dodo','passenger pigeon','Norwegian Blue']

>>> carol_birds=[3,'French hens',2,'turtledoves']

>>> all_birds=[small_birds,extinct_birds,'macaw',carol_birds]

>>> all_birds

[['hummingbird', 'finch'], ['dodo', 'passenger pigeon', 'Norwegian Blue'], 'macaw', [3, 'French hens', 2, 'turtledoves']]

>>> all_birds[0]

['hummingbird', 'finch']

>>> all_birds[1]

['dodo', 'passenger pigeon', 'Norwegian Blue']

双重索引

>>> all_birds[1][0]

'dodo'

1.5使用[offset]修改元素

可以通过赋值对列表中元素进行修改:

>>> marxes=['Groucho','Chico','Harpo']

>>> marxes[2]='Wanda'

>>> marxes

['Groucho', 'Chico', 'Wanda']

通过这种方式无法修改字符串中的指定字符,因为字符串是不可变的。

1.6指定范围并使用切片提取元素

>>> marxes=['Groucho','Chico','Harpo']

>>> marxes[0:2]

['Groucho', 'Chico']

列表的切片仍然是一个列表。

>>> marxes[::2]

['Groucho', 'Harpo']

>>> marxes[::-2]

['Harpo', 'Groucho']

利用切片可以巧妙地实现列表逆序:

>>> marxes[::-1]

['Harpo', 'Chico', 'Groucho']

1.7使用append()添加元素至尾部

列表是可变的:

>>> marxes=['Groucho','Chico','Harpo']

>>> marxes.append('Zeppo')

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Zeppo']

1.8使用extend()或+=合并列表

使用extend()可以将一个列表合并到另一个列表中。

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> others=['Gummo','Karl']

>>> marxes.extend(others)

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']

也可以使用+=:

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> others=['Gummo','Karl']

>>> marxes+=others

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl']

如果错误地使用了append(),那么others会被当成一个单独的元素进行添加,而不是将其中的内容进行合并:

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> others=['Gummo','Karl']

>>> marxes.append(others)

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Zeppo', 'Gummo', 'Karl', ['Gummo', 'Karl']]

1.9使用insert()在指定位置插入元素

append()函数只能将新元素插入到列表尾部,而使用insert()可以将元素插入到列表的任意位置。指定偏移量为0可以插入列表头部。如果指定的偏移量超过了尾部,则会插入到列表最后,就如同append()一样,这一操作不会产生Python异常。

>>> marxes.insert(3,'Gummo')

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Gummo', 'Karl']

1.10使用del删除指定位置的元素

>>> del marxes[-1]

>>> marxes

['Groucho', 'Chico', 'Harpo', 'Gummo', 'Zeppo', 'Gummo']

当列表中一个元素被删除后,位于它后面的元素会自动往前移动填补空出的位置,且列表长度减1。

>>> marxes[2]

'Harpo'

>>> del marxes[2]

>>> marxes

['Groucho', 'Chico', 'Gummo', 'Zeppo', 'Gummo']

>>> marxes[2]

'Gummo'

1.11使用remove()删除具有指定值的元素

如果不确定或不关心元素在列表中的位置,可以使用remove()根据指定的值删除元素:

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> marxes.remove('Harpo')

>>> marxes

['Groucho', 'Chico', 'Zeppo']

1.12使用pop()获取并删除指定位置的元素

使用pop()同样可以获取列表中指定位置的元素,但在获取完成后,该元素会被自动删除。如果你为pop()指定了偏移量,它会返回偏移量对应位置的元素;如果不指定,则默认使用-1。

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> marxes.pop()

'Zeppo'

>>> marxes

['Groucho', 'Chico', 'Harpo']

>>> marxes.pop(1)

'Chico'

>>> marxes

['Groucho', 'Harpo']

计算机术语:

如果使用append()来添加元素到尾部,并通过pop()从尾部删除元素,实际上,实现了一个被称为LIFO(后进先出)队列的数据结构。我们更习惯称之为栈(stack)。如果使用pop(0)来删除元素则创建了一个FIFO(先进先出)队列。这两种数据结构非常有用,你可以不断接收数据,并根据需求对最先到达的数据(FIFO)或最后到达的数据(LIFO)进行处理。

1.13使用index()查询具有特定值的元素位置

如果想知道等于某一个值的元素位于列表的什么位置,可以使用index()函数进行查询:

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> marxes.index('Chico')

1

1.14使用in判断值是否存在

判断一个值是否存在于给定的列表中由许多方式,其中最具有Python风格的是使用in:

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> 'Groucho' in marxes

True

>>> 'Bob' in marxes

False

同一个值可能出现在列表的多个位置,但只要出现一次,in就回返回True:

>>> words=['a','deer','a','female','deer']

>>> 'deer' in words

True

1.15使用count()记录特定值出现的次数

使用count()可以记录某一个特定值在列表中出现的次数:

>>> words=['a','deer','a','female','deer']

>>> 'deer' in words

True

>>> words.count('a')

2

>>> words.count(1)

1.16使用join()转换为字符串

>>> friends=['Harry','Hermione','Ron']

>>> separator='*'

>>> joined=separator.join(friends)

>>> joined

'Harry*Hermione*Ron'

>>> separated=joined.split(separator)

>>> separated

['Harry', 'Hermione', 'Ron']

1.17使用sort()重新排列元素

在实际应用中,经常需要将列表中的元素按值排序,Python为此提供了两个函数:

1.列表方法sort()会对原列表进行排序,改变原列表内容;

2.通用函数sorted()则会返回排好序的列表副本,原列表内容不变。

a.数字元素,默认升序。使用reverse=True改变为降序排列。

b.字符串元素按字母表顺序排序。

>>> marxes=['Groucho','Chico','Harpo','Zeppo']

>>> marxes.pop()

'Zeppo'

>>> marxes

['Groucho', 'Chico', 'Harpo']

>>> sorted_marxes=sorted(marxes)

>>> sorted_marxes

['Chico', 'Groucho', 'Harpo']

sorted_marxes是一个副本,它的创建并不会改变原始列表的内容:

>>> marxes

['Groucho', 'Chico', 'Harpo']

但对marxes列表调用列表函数sort()则会改变它的内容:

>>> marxes.sort()

>>> marxes

['Chico', 'Groucho', 'Harpo']

能够自动地互相转换的多种类型元素列表,也可使用sort():

>>> numbers=['2','1','4.0','3']

>>> numbers.sort()

>>> numbers

['1', '2', '3', '4.0']

默认的排序是升序的,通过添加参数reverse=True可以改变为降序排序:

>>> numbers.sort(reverse=True)

>>> numbers

['4.0', '3', '2', '1']

1.18使用len()获取长度

len()可以返回列表长度:

>>> marxes=['Groucho', 'Chico', 'Harpo']

>>> len(marxes)

3

1.19使用=赋值,使用copy()复制

>>> a=[1,2,3]

>>> a

[1, 2, 3]

>>> b=a

>>> b

[1, 2, 3]

>>> a[0]='surprise'

>>> a

['surprise', 2, 3]

>>> b

['surprise', 2, 3]

b与a实际上指向的是同一个对象,因此,无论我们是通过a还是b来修改列表的内容,其结果都会作用于双方:

>>> b

['surprise', 2, 3]

>>> b[0]='I hate surprise'

>>> b

['I hate surprise', 2, 3]

>>> a

['I hate surprise', 2, 3]

>>> len(marxes)

3

通过下面任意一种方法,都可以将一个列表的值赋值到另一个新的列表中:

1.列表copy()

2.list()转换函数

3.列表分片[:]

>>> a=[1,2,3]

>>> b=a.copy()

>>> c=list(a)

>>> d=a[:]

再次注意,在这个例子中,b、c、d都是a的赋值:它们是自身带有值的新对象,与原始的a所指向的列表对象[1,2,3]没有任何关联。改变a不影响b、c和d的复制。

>>> a[0]='integer lists are boring'

>>> a

['integer lists are boring', 2, 3]

>>> b

[1, 2, 3]

>>> c

[1, 2, 3]

>>> d

[1, 2, 3]

2.元组

与列表类似,元组也是由任意类型元素组成的序列。与列表不同的是,元组是不可变的,这意味着一旦元组被定义,将无法再进行增加、删除或修改元素等操作。因此,元组就像是一个常量列表。

2.1使用()创建元组

>>> empty_tuple=()

>>> empty_tuple

()

创建包含一个或多个元素的元组时,每一个元素后面都需要跟着一个逗号,即使只包含一个元素也不能省略:

>>> one_marx='Groucho',

>>> one_marx

('Groucho',)

如果创建的元组所包含的元素数量超过1,最后一个元素后面的逗号可以省略:

>>> marx_tuple='Groucho','Chico','Harpo'

>>> marx_tuple

('Groucho', 'Chico', 'Harpo')

可以一口气将元组赋值给多个变量:

>>> marx_tuple=('Groucho','Chico','Harpo')

>>> a,b,c=marx_tuple

>>> a

'Groucho'

>>> b

'Chico'

>>> c

'Harpo'

有时候这个过程被称为元组解包。

可以利用元组在一条语句中对多个变量的值进行交换,而不需要借助临时变量:

>>> password='swordfish'

>>> icecream='tuttifrutti'

>>> password,icecream=icecream,password

>>> password

'tuttifrutti'

>>> icecream

'swordfish'

tuple()函数可以用其他类型的数据来创建元组:

>>> marx_list=['Groucho','Chico','Harpo']

>>> tuple(marx_list)

('Groucho', 'Chico', 'Harpo')

2.2元组与列表

在许多地方都可以用元组代替列表,但元组的方法函数与列表相比要少一些。元组的优势:

元组占用的空间较小

你不会意外修改元组的值

可以将元组用作字典的键

命名元组可以作为对象的迭代

函数的参数是以元组形式传递的

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

python语言及其应用

python元组和列表逆序_Python容器:列表与元组相关推荐

  1. python元组和列表逆序_Python元组和列表你真的用对了吗?

    对于Python来说,列表可谓是用到的非常多的数据结构之一了,但是Python还有另外一个数据结构叫做元组,直观表现来说,元组就像是不可变的列表,那么问题来了,元组和列表的区别是什么呢?什么时候应该用 ...

  2. python中sorted函数逆序_Python中sorted函数的用法(转)

    [Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...

  3. python如何输出整数逆序_python字符串类型及操作

    字符串索引&切片用法 Str[]对字符串进行索引,括号内为获取第几个元素 使用[M:N:K]根据步长对字符串切片 <字符串>[M:N]是可以缺失的,M缺失表示至开头,N缺失表示至结 ...

  4. python实现数的逆序_python怎么逆序

    python中字符串数组如何逆序排列?下面给大家介绍几种方法: 1.数组倒序: 原始元素的倒序排列 (1)切片>>> arr = [1,2,3,4,3,4] >>> ...

  5. python怎么将字符串逆序_python中如何把一个字符串顺序逆序反转的几种方法?

    如 a='123456789' 反转成 a='987654321' 第一种方法:使用字符串切片 >>> a='123456789' >>> a = a[::-1] ...

  6. python列表逆序输出_Python 让列表逆序排列的 3 种方式

    让列表逆序排列是我们编程时常碰到的问题,比如现在有一些客户的姓名是将拼音的首字母按 A - Z 排列的,而你现在想找一个姓张( Z )的客户,你就有了将姓名逆序排列的需求了.而在 Python 中,将 ...

  7. python列表方法语句_Python中列表和元组的相关语句和方法讲解

    列表(list): 首先,列表属于序列,那么序列类型可用如下内建函数-- list(iter):把可迭代对象转换为列表. str(obj):把obj对象转换为字符串,即用字符串来表示这个对象. tup ...

  8. python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...

    [Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...

  9. python 逆序_python中逆序

    python中的list的sort方法怎样逆序输出 很简单啊, sort 支持 reverse 参数,看下面的例子,分别按照正常顺序 (升序)排列,以及按照逆序排列. >>> l = ...

最新文章

  1. Where to Store your JWTs – Cookies vs HTML5 Web Storage--转
  2. Windows APC学习笔记(二)—— 挂入过程执行过程
  3. Spring中对于WebApplicationInitializer的理解
  4. mysql 设置按天分表_MySQL 优化实战记录
  5. 给Source Insight做个外挂系列之一--发现Source Insight
  6. linux中自动挂载脚本,LIUNX一键自动挂载脚本,宝塔磁盘LIUNX一键分区磁盘 | 帮助信息-动天数据...
  7. Weblogic 10.3.5在64位Windows系统下的安装和配置
  8. 计算任意两个圆的交点
  9. Python:pip下载库后导入Pycharm的方法
  10. Application 用法
  11. 反射中的SetValue和GetValue
  12. 【python第三方库】playwright简要入门
  13. Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Netw
  14. c语言绝对值大小并输出原值,c语言中绝对值大小的比较
  15. Win10提示“PL2303HXA自2012已停产,请联系供货商”的解决方法
  16. 公众号上怎么转换html格式,教你完美复制别人的公众号内容和图片到自己的号...
  17. Flutter Icon
  18. python数据分析比较好的书籍_python数据分析比较好的书籍推荐|陇川制作项目盈利能力分析...
  19. 2018年中国互联网企业100强
  20. 支付宝生活缴费商业项目标准版-赖国荣-专题视频课程

热门文章

  1. Gabor滤波器为什么能实现频率域加窗
  2. correl函数相关系数大小意义_correl(correl函数相关系数大小意义)
  3. 国内有哪些比较靠谱的云服务器?
  4. 中国程序化购买广告解析:RTB/DSP/Ad Exchange/SSP/DMP,思维导图
  5. ES6新特性总结-面试必会
  6. Docker容器化技术笔记
  7. C语言串口编程收发数据 并实现AT指令的收发 可变参数控制串口属性 树莓派4G模块
  8. 数组、链表、LinkedList源码分析、跳表
  9. python无法写入文件夹_python write无法写入文件的解决方法
  10. 前端JS获取当前日期