# -*- coding:utf-8 -*-
# ------------------------------------
# ++ list 和 tuple ++
# ------------------------------------
stuNames = ["zhangsan","李四","王 5"]
# 全部
print(stuNames)
# 获取任意一个:下标获取
print(stuNames[0])
print(stuNames[2])
# 负数方式获取,为从后数,第一个为-1,最后一个为:0 - len(t)
print(stuNames[-1])
print(stuNames[0 - len(stuNames)])
# 错误方式:下标越界
# print(stuNames[3])
# 查看个数:len(t),和数组类似
print(len(stuNames))
# 增加末尾:追加元素到当前列表的末尾:是在原列表中新增
stuNames.append("小甲")
print(stuNames)
# 增到指定位置:插入到指定的位置(位置从 0 开始)
stuNames.insert(1,"我在第一个位置插入")
print(stuNames)
# 删:删除末尾的元素
stuNames.pop()
print(stuNames)
# 改:替换元素
stuNames[2] = "我替换了第二个元素"
print(stuNames)
# list 中嵌套 list
stuNames2 = ["新 list 第一个", stuNames, "新 list 最后一个"]
print(stuNames2)
# 获取新 list 的 list 元素中第一个元素
print("我是嵌套中的 list 元素:",stuNames2[1][0])
# tuple:元组,特点一旦初始化就不能修改,因此不能用 append insert 和赋值,目的是让代码更安全
# 和上面测试的列表相比,元组只有获取每个字段的属性
tupleStuNames = ("小花", "小花生", "小花猫")
# 全部元组
print(tupleStuNames)
print(tupleStuNames[0])
print(tupleStuNames[0 - len(tupleStuNames)])
# 注意事项:1.定义一个空的元组和一个元素的元组
# 空元组
nullTup = ()
print(type(nullTup))
# 错误方式
tempTup = (1)
print(tempTup)
# 正确方式
tempTup = (1,)
print(tempTup)
# 注意事项:1.可变的元组
changeTuple = ("我是第一个", 2, ["tuple 列表 1", "tuple 列表 2"] )
print(changeTuple)
print("元组的长度:",len(changeTuple))
print(changeTuple[2])
changeTuple[2].append("添加的 tuple 列表 1")
print(changeTuple)
# ------------------------------------
# 总结:
# 常用的 list 属性:下标取值/反向取值/下标赋值/len(t)/pop(t)/insert(num, t)/append()
# 常用的 tuple 属性: 下标取值/反向取值/下标赋值/len(t)
# 可变的 tuple,changeTuple = ("我是第一个", 2, ["tuple 列表 1", "tuple 列表 2"] )
# ------------------------------------