当前位置: 首页 > news >正文

python数据结构-列表,元组

列表

列表是Python中最通用的数据类型,可以写成方括号之间的逗号分隔值(项目)列表。 使用列表的重要事项是,列表中的项目不必是相同的类型。也就是说一个列表中的项目(元素)可以是数字,字符串,数组,字典等甚至是列表类型。
创建列表时,可在方括号([])中放置并使用逗号分隔值。 例如 -

list1 = ['physics', 'chemistry', 1990, 2019];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"]

与字符串索引类似,列表索引从0开始,列表可以被切片,连接等。

访问列表中的值

要访问列表中的值,请使用方括号将切片与索引或索引一起使用,以获取该索引处的值。 例如 -

#!/usr/bin/pythonlist1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];# 第1个元素,返回的是字符串
print "list1[0]: ", list1[0]# 第2到5个元素,返回的是一个列表
print "list2[1:5]: ", list2[1:5]

当上面的代码执行时,它会产生以下结果 -

list1[0]:  physics
list2[1:5]:  [2, 3, 4, 5]

更新列表

可以通过在赋值运算符的左侧给出切片来更新列表的单个或多个元素,并且可以使用append()方法将其添加到列表中的元素。 例如 -

#!/usr/bin/pythonlist = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2]
list[2] = 2001;
print "New value available at index 2 : "
print list[2]

注 - append()方法在后面的章节中讨论。

当上面的代码被执行时,它会产生以下结果 -

Value available at index 2 :
1997
New value available at index 2 :
2001

删除列表元素

要删除一个列表元素,如果确切地知道要删除哪个元素,或者不知道如何使用remove()方法,那么可以使用del语句。 例如 -

#!/usr/bin/pythonlist1 = ['physics', 'chemistry', 1997, 2000];
print list1
del list1[2];
print "After deleting value at index 2 : "
print list1

当上面的代码被执行时,它会产生以下结果 -

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

注 - remove()方法在后面的章节中讨论。

基本列表操作

列表很像字符串一样对+和*运算符作出响应; 它们也意味着连接和重复,但它计算返回结果是新列表,而不是字符串

Python表达式结果描述
len([1, 2, 3])3计算列表的长度
[1, 2, 3] + [ 4, 5, 6][1, 2, 3, 4, 5, 6]两个列表连接
[‘Hi!’] * 4[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]重复操作
3 in [1, 2, 3]True成员关系
for x in [1, 2, 3]: print x,1 2 3迭代

元组

元组是一系列不可变的Python对象。 元组是一种序列,就像列表一样。 元组和列表的区别在于,不同于列表和元组使用中括号 - (),而列表使用方括号 - [],并且元组不能改变。
创建一个元组与放置不同的逗号分隔值一样简单。 也可以将这些以逗号分隔的值放在圆括号之间。 例如 -

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

空元组是两个不包含任何内容的圆括号,如下 -

tup1 = ();

要写一个包含单个值的元组,即使只有一个值,也必须包含一个逗号,

tup1 = (50,);

像字符串索引一样,元组索引从0开始,并且它们可以被分片,连接等等。

访问元组中的值

要访问元组中的值,可使用方括号将切片与索引一起使用,以获取该索引处可用的值。 例如 -

#!/usr/bin/pythontup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );
print ("tup1[0]: ", tup1[0]);
print ("tup2[1:5]: ", tup2[1:5]);

执行上面示例代码,得到以下结果 -

tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]

更新元组

元组是不可变的,这意味着不能更新或改变元组元素的值。但是可以将现有的元组的一部分来创建或重组成新的元组,如下例所示 -

#!/usr/bin/pythontup1 = (12, 34.56);
tup2 = ('abc', 'xyz');# Following action is not valid for tuples
# tup1[0] = 100;# So let's create a new tuple as follows
tup3 = tup1 + tup2;
print (tup3);

当执行上面示例代码,得到以下结果 -

(12, 34.56, 'abc', 'xyz')

删除元组元素

删除单个元组元素是不可能的。 当然,将另一个元组与不需要的元素组合在一起成新的元组是没有任何问题的。
要显式删除整个元组,只需使用del语句。 例如 -

#!/usr/bin/pythontup = ('physics', 'chemistry', 1997, 2000);
print (tup);
del tup;
print ("After deleting tup : ");
print (tup);

这会产生以下结果。 请注意引发的异常,这是因为在del tup语句之后,元组不再存在 -

('physics', 'chemistry', 1997, 2000)
After deleting tup : 
Traceback (most recent call last):File "F:\worksp\python\test.py", line 7, in <module>print (tup);
NameError: name 'tup' is not defined

基本元组操作

元组可像字符串一样对+和*运算符作出响应; 它们也意味着连接和重复,但返回结果是一个新的元组,而不是一个字符串。
事实上,元组响应类似字符串使用的所有常规序列操作 -

Python表达式结果描述
len((1, 2, 3))3计算列表的长度
(1, 2, 3) + ( 4, 5, 6)(1, 2, 3, 4, 5, 6)两个列表连接
(‘Hi!’) * 4(‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’)重复操作
3 in (1, 2, 3)True成员关系
for x in (1, 2, 3): print x,1 2 3迭代
http://www.lryc.cn/news/3763.html

相关文章:

  • Properties类读配置文件、修改配置文件
  • 图解LeetCode——剑指 Offer 24. 反转链表
  • 【C语言】“指针的运算”、“指针与数组”
  • Linux高级命令之查找文件命令
  • PyCharm+Docker:打造最舒适的深度学习炼丹炉
  • 【mock】手把手带你用mock写自定义接口+mock常用语法
  • 2023 年腾讯云服务器CVM快速配置购买教程,新手上云必备!
  • opencv显示图像
  • C++:类和对象(中)
  • 53. 最大子数组和
  • 基于Java+SpringBoot+SpringCloud+Vue前后端分离医院管理系统设计与实现
  • QT基础入门【环境配置篇】linux桌面QT开发环境的构建以及问题解决
  • Linux系统之部署企业内部静态导航页
  • 2023备战金三银四,Python自动化软件测试面试宝典合集(四)
  • 算法训练营 day43 动态规划 不同路径 不同路径 II
  • 关联查询的SQL有几种情况
  • 查缺补漏三:事务隔离级别
  • 没有她的通讯录(C语言实现)
  • Spring Security 从入门到精通
  • 微信小程序Springboot vue停车场车位管理系统
  • 看完这篇 教你玩转渗透测试靶机vulnhub——Hack Me Please: 1
  • nodejs+vue地铁站自动售票系统-火车票售票系统vscode
  • Spring Security in Action 第十二章 OAuth 2是如何工作的?
  • 天工开物 #5 我的 Linux 开发机
  • 【沁恒WCH CH32V307V-R1开发板输出DAC实验】
  • Linux进程控制详解
  • C语言深度剖析之程序环境和预处理
  • 【Spark分布式内存计算框架——Spark Core】9. Spark 内核调度(上)
  • Vulkan教程(15): Graphics pipeline之Render passes(渲染通道)
  • 乐观锁、雪花算法、MyBatis-Plus多数据源