#!/usr/bin/env python # -*- coding: utf-8 -*
""" list和元组tuple """
# 对之前的补充:
# 当索引超出了范围时,Python会报一个IndexError错误,所以,要确保索引不要越界
# 记得最后一个元素的索引是len(classmates) - 1
# 也可以把元素插入到指定的位置,比如索引号为1的位置
classmate = ['zhangsan', 'lisi', 'wangwu', 'lisi']
print classmate[0]
classmate.insert(0, 'liuliu')
# 在索引数字的位置插入新的元素'liuliu'
# 索引从0开始。。。在0的位置就是从头开始插入
# 其实就是空隙,0-元素一-1-元素二-2-元素三......
print classmate
print classmate.index('lisi')
# 返回元素lisi第一次出现的index索引
# print classmate.index('lsssa')
# 必须要有,没有的话会报错。。。
a =1, 2, 34, 55, 6
print a
# a.insert是错误的,元组没有insert函数,不能直接插入
print a.index(2)
# 没有的话也会报错
print a[1]
print a.count(2)
# 统计元组内某个元素出现的次数
"""列表和元组,取某个元素的时候刚好反着,元组用[],而list则用()"""
# 要删除list的元素,用pop()方法
classmate.pop()
# 不写的话默认为删除最后一个元素
print classmate
classmate.pop(1)
print classmate
# 然后是替换某个元素的话直接赋值就可以了
# 如果list中元素也是list类型的话就是二维数组了,相当于matlab中矩阵的构成,不同的是不用要求list中的list维数一致
arr = [[1, 2], [2]]
print arr
# tuple一旦初始化就不能修改,所以没有append,insert等操作
# 不可变的tuple有什么意义?
# 因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
# 因为tuple不可变,在定义的时候,tuple的元素就必须被确定下来
t = ('a', 'b', ['A', 'B'])
t[2][0] ='X'
t[2][1] ='Y'
print t
# 所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变
# 即指向'a',就不能改成指向'b'
# 指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
# 所以说元组中的元素为list的话,表面看tuple中变了,但其实是list变了而已