-
前面我们看到了tuple一旦创建就不能修改。现在,我们来看一个“可变”的tuple: >>> t = ('a', 'b', ['A', 'B']) 注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到: >>> L = t[2] 然后,我们把list的两个元素改一改: >>> L[0] = 'X' >>> L[1] = 'Y' 再看看tuple的内容: >>> print t ('a', 'b', ['X', 'Y']) 不是说tuple一旦定义后就不可变了吗?怎么现在又变了? 别急,我们先看看定义的时候tuple包含的3个元素: 当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为: 表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。 tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!查看全部
-
uple和list一样,可以包含 0 个、1个和任意多个元素。 包含多个元素的 tuple,前面我们已经创建过了。 包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示: >>> t = () >>> print t () 创建包含1个元素的 tuple 呢?来试试: >>> t = (1) >>> print t 1 好像哪里不对!t 不是 tuple ,而是整数1。为什么呢? 因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。 正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义: >>> t = (1,) >>> print t (1,) Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。 多元素 tuple 加不加这个额外的“,”效果是一样的: >>> t = (1, 2, 3,) >>> print t (1, 2, 3)查看全部
-
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。 同样是表示班里同学的名称,用tuple表示如下: >>> t = ('Adam', 'Lisa', 'Bart') 创建tuple和创建list唯一不同之处是用( )替代了[ ]。 现在,这个 t 就不能改变了,tuple没有 append()方法,也没有insert()和pop()方法。所以,新同学没法直接往 tuple 中添加,老同学想退出 tuple 也不行。 获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素,不信可以试试:查看全部
-
另一个办法是直接用Paul把Bart给替换掉: >>> L[2] = 'Paul' >>> print L L = ['Adam', 'Lisa', 'Paul'] 对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。 由于Bart还可以用 -1 做索引,因此,下面的代码也可以完成同样的替换工作: >>> L[-1] = 'Paul'查看全部
-
当首先删除索引为 2 的Paul时,L变成了: ['Adam', 'Lisa', 'Bart'] 这时,注意到Bart的索引已经从原来的3变成2了! 参考代码: L = ['Adam', 'Lisa', 'Paul', 'Bart'] L.pop(3) L.pop(2) print L 动态的效果啊查看全部
-
如果Paul同学排在最后一个,我们可以用list的pop()方法删除: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L.pop() 'Paul' >>> print L ['Adam', 'Lisa', 'Bart'] pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 'Paul'。 如果Paul同学不是排在最后一个怎么办?比如Paul同学排在第三: >>> L = ['Adam', 'Lisa', 'Paul', 'Bart'] 要把Paul踢出list,我们就必须先定位Paul的位置。由于Paul的索引是2,因此,用 pop(2)把Paul删掉: >>> L.pop(2) 'Paul' >>> print L ['Adam', 'Lisa', 'Bart']查看全部
-
append()总是把新的元素添加到 list 的尾部。 如果 Paul 同学表示自己总是考满分,要求添加到第一的位置,怎么办? 方法是用list的 insert()方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素: >>> L = ['Adam', 'Lisa', 'Bart'] >>> L.insert(0, 'Paul') >>> print L ['Paul', 'Adam', 'Lisa', 'Bart']查看全部
-
造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list: >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates # 打印classmates变量的内容 ['Michael', 'Bob', 'Tracy'] 由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据: >>> L = ['Michael', 100, True] 一个元素也没有的list,就是空list: >>> empty_list = []查看全部
-
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如: print u'中文' 中文 注意: 不加 u ,中文就不能正常显示。 Unicode字符串除了多了一个 u 之外,与普通字符串没啥区别,转义字符和多行表示法仍然有效: 转义: u'中文\n日文\n韩文' 多行: u'''第一行 第二行''' raw+多行: ur'''Python的Unicode字符串支持"中文", "日文", "韩文"等多种语言''' 如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释 # -*- coding: utf-8 -*- 目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。查看全部
-
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如: r'\(~_~)/ \(~_~)/' 但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串(为什么?) 如果要表示多行字符串,可以用'''...'''表示: '''Line 1 Line 2 Line 3''' 上面这个字符串的表示方法和下面的是完全一样的: 'Line 1\nLine 2\nLine 3' 还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串: r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''查看全部
-
因为Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True,查看全部
-
要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。 1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。 2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。 所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。查看全部
-
# -*- coding: utf-8 -*- 目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为... 并选择UTF-8格式保存。查看全部
-
用逗号的话 会加空格 ; 用加号的话 没有空隙 空格;查看全部
-
add(index) 在set中添加。 remove(index) 删除set中的元素。(要首先判断元素是否存在,否则会报错。)查看全部
举报
0/150
提交
取消