python元组和列表逆序_Python容器:列表与元组-程序员宅基地

技术标签: python元组和列表逆序  

30d4d4170ddca83032dcd4d314267b86.png欢迎关注「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语言及其应用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39640687/article/details/114416135

智能推荐

PTA 数据结构与算法题目集(中文)6-7_pta数据结构6-7-程序员宅基地

文章浏览阅读695次。6-7 在一个数组中实现两个堆栈(20 分)本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;Max_pta数据结构6-7

只要三步!阿里云DLA帮你处理海量JSON数据-程序员宅基地

文章浏览阅读123次。概述 您可能有大量应用程序产生的JSON数据,您可能需要对这些JSON数据进行整理,去除不想要的字段,或者只保留想要的字段,或者仅仅是进行数据查询。 那么,利用阿里云Data Lake Analytics或许是目前能找到的云上最为便捷的达到这一目标的服务了。仅仅需要3步,就可以完成对海量..._什么云服务可以直接存储json数据

react常见面试题_react diff 面试题-程序员宅基地

文章浏览阅读413次。diff 算法 虚拟dom 理论_react diff 面试题

【机器学习】Meta-Learning(元学习)_meta learning-程序员宅基地

文章浏览阅读1.2w次,点赞23次,收藏104次。文章目录前言从传统学习引出元学习对比机器学习和元学习如何实现元学习参考链接前言元学习Meta Learning,含义为学会学习,即learn to learn,带着对人类的“学习能力”的期望诞生的。Meta Learning希望使得模型获取一种 “学会学习” 的能力,使其可以在获取已有“知识”的基础上快速学习新的任务。从传统学习引出元学习传统的机器学习方法是针对一个特定的,一般是有大量数据的数据集 ,试图学习出一个预测模型 ,使得模型对于测试集上的数据的预测有最小的误差。这个思路在数据集 D_meta learning

5.25Python基础语法2_type({100})-程序员宅基地

文章浏览阅读362次。一、类型相关操作1.type函数理解:type(数据)获取指定数据类型例如:type(100) #直接输入是不会打印,需要printprint(type(100)) #整型(int) #得出结果:100print(type(1.25)) #浮点型(float) #得出结果:1.25print(type('陈某某')) #字符串(str) #得出结果:陈某某print(type(10>20)) #布尔(bool) _type({100})

Unable to open debugger port错误,明明CMD查询端口没有被占用,但是idea一直提示端口占用_unable to open debugger port 12208-程序员宅基地

文章浏览阅读798次。在运行idea时常常提示端口被占用,在cmd查询该端口,但显示端口没有被占用怎么办?_unable to open debugger port 12208

随便推点

Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别_qt 用qopenglwidget生成release版,依赖什么库-程序员宅基地

文章浏览阅读7.9w次,点赞53次,收藏235次。若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936本文章博客地址:https://blog.csdn.net/qq21497936/article/details/94585803目录前话相关博客QGLWidget概述QGLWidget子类示例更新绘制覆盖层绘制技术线程方案一:在线程中进..._qt 用qopenglwidget生成release版,依赖什么库

C 语言的浮点数类型_c语言float和double保留小数点后几位-程序员宅基地

文章浏览阅读5.3k次。C 语言的浮点数类型_c语言float和double保留小数点后几位

gradle打包报错Using insecure protocols with repositories..._gradle using insecure protocols with repositories,-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏2次。gradle 打包时报以下错误:二、解决方法在 build.gradle 文件中找到 http://mirrors.huaweicloud.com/repository/maven/ 所在的位置,增加 allowInsecureProtocol = true 一行:_gradle using insecure protocols with repositories, without explicit opt-in,

java程序员微信群,欢迎准java行业人员加入,会一直更新_java开发接单群-程序员宅基地

文章浏览阅读7.3k次。微信群,请扫描二维码加入 本人在北京,主场北京,位置不限, 仅限java行业交流,C C##以及python请另外加群,谢谢欢迎准 java行业的进入,杜绝假冒程序员加入,精兵简政群内与java无关私事请私聊,任何java的问题,欢迎讨论——————————————————————————————————如若二维码失效,请加微信拉群..._java开发接单群

【数据库】数据、数据库、数据库管理系统、数据库系统_系统的数据管理逻辑-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏43次。一、数据库系统概述数据库的四个基本概念:数据、数据库、数据库管理系统、数据库系统:1、数据:描述事物的符号记录称为数据。 (1)、数据是数据库中存储的基本对象。 (2)、数据是分类型的。 (3)、数据的含义称为数据的语义,数据与其语义是不可分的。 2、数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数..._系统的数据管理逻辑

Mybatis-Plus报错:java.sql.SQLException: The server time zone value ‘�й���׼ʱ��‘ is unrecognized or repr_mybatis plus servertimezone=gmt+8未生效 原因-程序员宅基地

文章浏览阅读315次。java.sql.SQLException: The server time zone value ‘�й���׼ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value i_mybatis plus servertimezone=gmt+8未生效 原因

推荐文章

热门文章

相关标签