从零开始学Python3(二)--list和tuple

  list和tuple都是python内置的数据类型

list

list是一个可变的有序表,所以,可以往list中追加元素到末尾:

>>> a = [‘a‘,‘b‘,‘c‘,1,2,3]
>>> a.append(4)
>>> a
[‘a‘, ‘b‘, ‘c‘, 1, 2, 3, 4]

也可以把元素插入到指定的位置,比如索引号为1的位置: (insert比append的性能差很多

>>> a.insert(1,‘d‘)
>>> a
[‘a‘, ‘d‘, ‘b‘, ‘c‘, 1, 2, 3, 4]

要删除list末尾的元素,用pop()方法:

>>> a
[‘a‘, ‘d‘, ‘b‘, ‘c‘, 1, 2, 3, 4]
>>> a.pop()
4
>>> a
[‘a‘, ‘d‘, ‘b‘, ‘c‘, 1, 2, 3]

要删除指定位置的元素,用pop(i)方法,其中i是索引位置:

>>> a.pop(2)
‘b‘
>>> a
[‘a‘, ‘d‘, ‘c‘, 1, 2, 3]

要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

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

tuple

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t
(1,)

来看一个“可变的”tuple:

>>> t = (‘a‘,‘b‘,[‘A‘,‘B‘])
>>> t[2][1] = ‘x‘
>>> t
(‘a‘, ‘b‘, [‘A‘, ‘x‘])

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向‘a‘,就不能改成指向‘b‘,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。

时间: 2024-10-01 06:47:51

从零开始学Python3(二)--list和tuple的相关文章

从零开始学JavaScript二(基本概念)

基本概念 一.区分大小写 在ECMAScript中的一切(变量.函数名.操作符)都是区分大小写的. 如变量名test和Test分别表示两个不同的变量, 二.标识符 所谓标识符,就是指变量.函数.属性的名字,或者函数的参数.标识符按照下列格式规则组合起来的一或者多个字符: 第一个字符必须为一个字母.下划线(_).或者一个美元符号($); 其它字符可以是字母.下划线.美元符号或数字. ECMAScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,例如:firstSe

Java从零开始学十二(构造方法)

一.构造方法 构造方法的主要目的是为类中的属性初始化 二.构造方法的定义格式 class 类名称{ 访问权限 类名称(类型1 参数1,类型2 参数2,…){ 程序语句 ; …    // 构造方法没有返回值 } } 在构造方法的声明中读者一定要牢记以下几点: · 构造方法的名称必须与类名称一致 · 构造方法的声明处不能有任何返回值类型的声明 · 不能在构造方法中使用return返回一个值 class Person { private String name; // 声明姓名属性 private

从零开始学MySQL(二)

鉴于上节篇幅以安装为主,因此对于调用mysql所需要使用的“命令”只是略微提及.随之而来就会带给读者诸多不解了,因为你会思考,这串长长的字符到底有什么特殊的含义呢?聪明的你可能早就抱着好奇心去“摆渡”一下了.而答案不过是在连接mysql服务器时,应当使用的一种方式——即,身份验证而已.另外一个情境是,先前笔者每每登录总是需要键入这么多个字符,久而久之就难免抱怨,“哎呀,好烦,每次登录都要设定这些连接参数,诸如‘mysql -p -uroot -h......(此处省略更多参数)’,既然无法跳过这

从零开始学Shell(二)

$1,$2....${10},${11},[root@localhost cee]# cat p.sh #!/bin/bash#file_name:p.shecho $1 $2[root@localhost cee]# sh p.sh 123 william123 william[root@localhost cee]# sh p.sh 123 william 456123 william[root@localhost cee]# [root@localhost cee]# echo \${1.

从零开始学安全(二十九)●上传漏洞代码分析

这是一段php 对文件上传黑名单限制  出现看没什么问题  但对包含函数运用错误以及对php 各种类型解析也不了解 1第一个问题   拿上传的后缀名 去和黑名单 对比   这种代码首先逻辑上就要明确 不是拿后缀名和黑名单数组对比是否包含 因为后缀可以是 php3  而是 对黑名单里的每个字符串逐个 去对比 上传后缀     应该用 输入字符和数组里的字符进行对比是否有包含关系 第二个问题 黑名单验证不全 |asp/aspx|asp,aspx,asa,asax,ascx,ashx,asmx,cer

从零开始学android<android事件的处理方式.二十四.>

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

从零开始学android<RatingBar评分组件.二十三.>

如果现在用户要对某个应用程序打分往往会使用图所示的组件,通过选择的"五角星"的个数来决定最终的打分成绩 这样的功能在Android之中,可以使用RatingBar组件实现,使用此组件可以方便用户的输入,而且很直观,RatingBar类的定义结构如下: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.RatingBa

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图

从零开始学ios开发(十二):Table Views(中)UITableViewCell定制

我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imageView.textLabel.detailTextLabel等属性,但是很多时候这些默认的属性并不能满足需要,其实更多的时候我们想自己制定UITableViewCell的内容,这篇学习的就是制定自己的UITableViewCell. UITableViewCell继承自UIView,因此它可以加载