#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 使用list 和 tuple
classmates = ['michasel','bob','tracy']
print classmates
# 变量classmates 就是一个list 用len() 函数可以获得元素的个数:
print len(classmates)
#用索引来访问list中每一个元素的位置,记得索引是从0开始的:
print classmates[0],classmates[1], classmates[2]
#当索引超出了范围,python会报一个indexerror错误 所以,要确保索引不要越界记得最后一个元素的索引是
#len(classmates)-1.
#print classmates[3]
# tips 要获取最后一个元素可以用classmates[-1]做索引直接获取最后一个元素:
#以此类推,可以获取倒数第2个、倒数第3个:
print classmates[-1],classmates[-2],classmates[-3]
# list 是一个可变的有序表,所以,可以往list中追加元素到末尾
#使用的基本是 apppend方法
classmates.append('admin')
print classmates
# 也可以把元素到指定位置,比如索引号1的位置:
classmates.insert(0,'xuan')
print classmates
# 要删除list末尾的元素,用pop()方法:
print classmates.pop()
print classmates
# 要删除指定的元素插入到指定位置,比如索引为1的位子
classmates.pop(1)
print classmates
# 要把某个元素替换成别的元素,可以直接给对应的索引位置赋值
classmates[0] = 'xuangg'
print classmates
# list 里面的元素数据类型也可以 不同
a = ['admin',True,1234]
print a
# list 元素也可以是另外一个list 比如 :
b = ['asp','python',['java','php'],'html']
print len(b)
print b[2][1]
#要注意s只有4个元素其中s[2]又是一个list如果拆开就容易理解
c =['java','php']
b =['asp','python','html']
# 要拿到php 可以写p[1] 或者b[2][1] 因此b可以看成是一个二维数组,类似的还有三维、四维、数组,不过很
#少用到 如果一个 list 中一个元素也没有就是一个空的list,长度为0
L =[]
print len (L)
# tuble
'''
另外一种有序列表叫元组:tuble tuble 和 list 非常类似但是tuble 一旦初始化就不能修改,比如同样
是列出同学的名字
'''
classmates = ('michel','bed','tracy')
'''
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:
'''
t = (1,2)
#如果要定义一个空的tuble,可以写成()
t = ()
print t
# 但是只有一个元素的tuble 如果你这么定义 :
t = (1)
print t
#定义的不是tuble 是1 这个数 这是因为tuble 既可以表示tuble 又可以表示数学公式中的小括号这就产生了
#歧义,因此,Python 规定 这种情况下 按小括号计算 计算结果自然是 1
# 所以 只有一个元素 的时必须加一个,逗号一面误解为计算机的括号
a = (1,)
print a
#最后来着一可变的tuble
t =('a','b',['A','B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print t
'''
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
'''