demo 1

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. >>> classmates = ['Michael', 'Bob', 'Tracy'] #
  5. >>> classmates
  6. ['Michael', 'Bob', 'Tracy']
  7. >>> len(classmates)
  8. 3
  9. >>> classmates[0]
  10. 'Michael'
  11. >>> classmates[1]
  12. 'Bob'
  13. >>> classmates[2]
  14. 'Tracy'
  15. >>> classmates[3]
  16. Traceback (most recent call last):
  17. File "<stdin>", line 1, in <module>
  18. IndexError: list index out of range
  19. >>> classmates[-1] #直接获取最后一个位置的元素
  20. 'Tracy'
  21.  
  22. >>> classmates[-1]
  23. 'Tracy'
  24. >>> classmates[-2]
  25. 'Bob'
  26. >>> classmates[-3]
  27. 'Michael'
  28. >>> classmates[-4]
  29. Traceback (most recent call last):
  30. File "<stdin>", line 1, in <module>
  31. IndexError: list index out of range
  32.  
  33. >>> classmates.append('Adam') # 插入到尾部
  34. >>> classmates
  35. ['Michael', 'Bob', 'Tracy', 'Adam']
  36. >>> classmates.insert(1, 'Jack') # 插入到指定位置,1
  37. >>> classmates
  38. ['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
  39.  
  40. >>> classmates.pop() # 删除list末尾的元素
  41. 'Adam'
  42. >>> classmates
  43. ['Michael', 'Jack', 'Bob', 'Tracy']
  44. >>> classmates.pop(1) # 删除指定位置的元素
  45. 'Jack'
  46. >>> classmates
  47. ['Michael', 'Bob', 'Tracy']
  48. >>> classmates[1] = 'Sarach' # 替换
  49. >>> classmates
  50. ['Michael', 'Sarach', 'Tracy']
  51.  
  52. >>> L = ['Apple', 123, True] # list元素的数据类型可以不同
  53. >>> L
  54. ['Apple', 123, True]
  55. >>> s = ['python', 'java', ['asp', 'php'], 'scheme'] # list可以包含list
  56. >>> s
  57. ['python', 'java', ['asp', 'php'], 'scheme']
  58. >>> len(s) # 可以将s看成二维数组
  59. 4
  60. >>> L = [] #空list
  61. >>> len(L)
  62. 0

tuple不可变

  1. >>> classmates = ('Michael', 'Bob', 'Tracy')
  2. >>> classmates
  3. ('Michael', 'Bob', 'Tracy')
  4. >>> classmates[0] = 'Se'
  5. Traceback (most recent call last):
  6. File "<stdin>", line 1, in <module>
  7. TypeError: 'tuple' object does not support item assignment

因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,eg

  1. >>> t = (1, 2)
  2. >>> t
  3. (1, 2)
  4. >>> t = ()
  5. >>> t
  6. ()

注意定义一个只有1元素的tuple,如果如下定义:

  1. >>> t = (1)
  2. >>> t
  3. 1

定义的不是tuple,是1这个数,因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,按小括号进行计算,计算结果是1。

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

  1. >>> t = (1,)
  2. >>> t
  3. (1,)
  4. >>>

Python在显示只有1个元素的tuple时,也会加一个逗号,以免误解成数学计算以上的括号。

如果tuple包含了list,其中的list内容是可变的,tuple没变是因为它指向的还是同样的list的地址,只是list中的内容变了,所以tuple还是没变。

  1. >>> t = ('a', 'b', ['A', 'B'])
  2. >>> t
  3. ('a', 'b', ['A', 'B'])
  4. >>> t[2][0] = 'X'
  5. >>> t[2][1] = 'Y'
  6. >>> t
  7. ('a', 'b', ['X', 'Y'])

练习:

  1. >>> L = [
  2. ... ['Apple', 'Google', 'Microsoft'],
  3. ... ['Java', 'Python', 'Ruby', 'Php'],
  4. ... ['Adam', 'Bart', 'Lisa']
  5. ... ]
  6. >>> L
  7. [['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'Php'], ['Adam', 'Bart', 'Lisa']]
  8. >>> print(L[0][0])
  9. Apple
  10. >>> print(L[1][1])
  11. Python
  12. >>> print(L[2][2])
  13. Lisa

Python学习笔记 - list和tuple的更多相关文章

  1. python学习笔记整理——元组tuple

    Python 文档学习笔记2 数据结构--元组和序列 元组 元组在输出时总是有括号的 元组输入时可能没有括号 元组是不可变的 通过分拆(参阅本节后面的内容)或索引访问(如果是namedtuples,甚 ...

  2. Python学习笔记5-元组Tuple

    tuple和list非常类似,但是tuple一旦初始化就不能修改,它也没有append(),insert()这样的方法.其他获取元素的方法和list是一样的 元组是用圆括号括起来的,其中的元素之间用逗 ...

  3. Python学习笔记_有关tuple的几点强调

    创建只有一个元素的tuple,需要用逗号结尾消除歧义 a_tuple = (2,) tuple中的list mixed_tuple = (1, 2, ['a', 'b']) print("m ...

  4. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  5. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  6. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

  7. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  8. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  9. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

随机推荐

  1. map函数、filer函数、reduce函数的用法和区别

    Map函数 map函数的用法如下: def add_one(x): return x+1 #使用普通函数 v1 = map(add_one,[1,2,3]) v1 = list(v1) print(v ...

  2. Python OptionParser 使用详解(转载)

    Python使用命令行参数能使处理流程更自动化. 链接的内容讲解得十分详细:https://www.tuicool.com/articles/rUvIbi

  3. Win7 环境下虚拟机内 Samba 服务器的安装、配置以及与主机的通信实现

    考虑到window和linux虚拟机之间互传文件较为麻烦,遂打算在虚拟机中安装Samba服务器,以此实现共享文件给window使用.然而安装配置过程曲折,遂作记录如下: 一.samba服务器的安装 正 ...

  4. Unity3D各平台Application.xxxPath的路径

    前几天我们游戏在一个同事的Android手机上启动时无法正常进入,经查发现Application.temporaryCachePath和Application.persistentDataPath返回 ...

  5. ejabberd为游戏免除注册限制

    ejabberd为游戏免除注册限制 (金庆的专栏 2016.11) ejabberd聊天服务器默认会限制同一IP注册帐号须间隔600s. 在游戏中需要为每个角色注册一个聊天帐号,不应该有此限制. 可以 ...

  6. Scheme r5rs letrec的用法

    说明,这是r5rs的用法. (letrec ((<variable> <init>) ...) <body>) 假设((<variable> <i ...

  7. 安卓高级3 RecyclerView 和cardView使用案例

    cardView: 添加依赖:在Studio搜索cardview即可 在V7包中 或者直接在gradle中添加 compile 'com.android.support:cardview-v7:24. ...

  8. 23 服务IntentService Demo6

    MainActivity.java package com.qf.day23_service_demo2; import android.app.Activity; import android.co ...

  9. Web Service进阶(三)HTTP-GET, HTTP-POST and SOAP的比较

    XML Web Service支持三种协议来与用户交流数据.这三种协议分别是: 1.SOAP:Simple Object Access Protocol 2.HTTP-GET 3.HTTP-POST ...

  10. 【shell点滴】参数变量

    参数变量故名思议就是用来操作输入参数的变量,知道用户输入了哪些参数,才可以进行相应的处理. 参数变量 作用 $1,$2- 取第几个参数的意思 $* 取出所有的参数,解析参数的分割符环境变量 IFS 来 ...