博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python学习笔记】数据结构—序列——list列表和tuple元组
阅读量:6679 次
发布时间:2019-06-25

本文共 2677 字,大约阅读时间需要 8 分钟。

hot3.png

可类似的与C语言中的数组对比一下

1、list

#!/usr/bin/env python#-*- coding:utf-8 -*-# list:一种内置的数据类型,列表,有序的集合,list里面的元素的数据类型可以不同classmates = [u'张三',2,'Cc']print classmates # 打印的是该变量指向内存地址上的值?# len()函数可以获取list的元素个数print len(classmates)# 可以利用索引访问每一个位置的元素,索引号是从0开始的print classmates[0]print classmates[1]print classmates[2]# print classmates[3] # 越界报如下错误:IndexError: list index out of range# ★为防止越界,最大索引应设置为len(classmates)-1★# 获取元素值还可以用-n,代表倒数第n个元素,同样注意★越界★的问题print classmates[-1]print classmates[-2]print classmates[-3]# print classmates[-4]# list作为可变的有序列表,可以添加、删除,也可以替换元素classmates.append('Ee')         # 往list中追加元素到末尾print classmatesclassmates.insert(3,'Dd')       # 把元素插入到指定的位置,比如索引号为3的位置print classmatesclassmates.pop()                # 删除list末尾的元素print classmatesclassmates.pop(0)               # 删除指定位置的元素,用pop(i)方法,其中i是索引位置:print classmatesclassmates[0]=2.2               # 替换就是直接将目标值赋到对应的索引位置print classmates# list元素也可以是另一个lists = ['python', 'java', ['asp', 'php'], 'scheme'] #注意:此时s只有4个元素,其中s[2]是一个list类型print sprint s[2][0],s[2][1]print len(s)# 可将s拆分如下p = ['asp', 'php']s = ['python', 'java', p, 'scheme']print sprint s[2][0],s[2][1]print len(s)# ★类似的可看成二维数组,推广到三维、四维。。。# 如果list中一个元素也没有,就是一个空list,长度为0l=[]print lprint len(l)

运行效果:155405_w5tF_2913386.png

2、tuple

#!/usr/bin/env python#-*- coding:utf-8 -*-# tuple :另一种内置的数据类型,元组,有序的集合,tuple里的各元素数据类型也可以不同# tuple与list的区别:1:list ==>[],tuple ==>() 2:tuple一旦初始化,其各元素的"指向"不能变化,故不存在增加、删除、替换操作# ★因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple★t = (u'李四','B2','C3')print t# 同样可以使用len()获取tuple的长度,即元素个数print len(t)# 同样可以利用下标索引值访问元素,索引号是从0开始的print t[0]print t[1]print t[2]# ★越界★,★为防止越界,最大索引应设置为len(classmates)-1★# 同样的,获取元素值还可以用-n,代表倒数第n个元素,同时注意★越界★的问题print t[-1]print t[-2]print t[-3]# 因为tuple的各元素指向不能改变,所以不存在增加、删除、替换操作# t[0]=u'王五'  # 该行提示报错# 同样,tuple的元素也可以是另一个tuplett = ('A1',t)print ttprint tt[1][0], tt[1][1], tt[1][2]print len(tt)# ★类似的可看成二维数组,推广到三维、四维。。。# ★★★★★★★★★★★★★★★★tuple的陷阱★★★★★★★★★★★★★★★★★★★★★★# 1:当定义一个tuple的时候,tuple的元素就必须被确定下来t1 = (1,2)  print t1# 2:定义一个空的tuple,可以写成()t2 = ()print t2# 3:定义只有一个元素的tuple时,必须加一个逗号,以消除歧义t3 = ('a')print t3                     # 因为()既可以表示tuple类型的变量也可以表示小括号,所以造成了歧义                             # 而Python规定,这种情况下,按小括号进行计算,于是造成这种很隐晦的错误t3 = ('a',)                  # 此时,重新定义了t3print t3                     # Python在显示只有1个元素的tuple时,也会加一个逗号,以免误解成数学计算意义上的括号# 4:"看似可变的"tuplet4 = ('AAaa','BBbb',['CCcc',1])print t4print t4[2][0],t4[2][1]t4[2][0] = 'DDdd't4[2][1] = 2print t4print t4[2][0],t4[2][1]      # 此时,只是list变量变了,tuple的指向并没有变,仍指向该list                             # tuple所谓的“不变”是说,tuple的每个元素,指向永远不变,但是指向的元素是允许变化的# 5:理解了“指向不变”后,那么要创建一个内容也不变的tuple,就必须保证tuple的每一个元素本身也不能变

运行效果:155445_w7VJ_2913386.png

转载于:https://my.oschina.net/MasterLi161307040026/blog/745811

你可能感兴趣的文章
交换机SPAN功能配置
查看>>
关于ssh的问题
查看>>
作业 rh124
查看>>
Docker创建tomcat镜像
查看>>
Restful学习随笔
查看>>
2018区块链学习路线及大纲附Java,Python,初级高级,深入浅出视频教程
查看>>
[Algorithms] Longest Common Subsequence
查看>>
常见排序算法总结(含C/C++代码)
查看>>
CurrentRowColor 选中行 颜色改变
查看>>
内容溢出显示省略号
查看>>
二维码(支持arc,苹果自带扫描,zbar扫描,二维码生成)
查看>>
更改matlab默认工作路径
查看>>
[转] EM算法
查看>>
在VS中折叠所有代码或展开所有代码
查看>>
JavaScript 书籍推荐(转)
查看>>
《活法》摘录一
查看>>
C/S和B/S结构区别整理
查看>>
python基础===理解Class的一道题
查看>>
Bootstrap3 概述
查看>>
Django中的APP
查看>>