# Python 4.列表
# 列表是一个值,它包含多个字构成的序列。
# 列表用左方括号开始,右方括号结束。[]
# 例如:['cat', 'bat', 'rat']
# 下标取值
spam = ['cat', 'bat', 'rat', 'rab']
print(spam[0], spam[1], spam[2], spam[3])
# 负下标的使用 -1表示最后一个,依次类推
print(spam[-1], spam[-2], spam[-3], spam[-4])
# 截取子列表
# 截取从1开始2个数据
spam_1 = spam[1:3]
# 打印数据长度
print(len(spam_1))
print(spam_1[0], spam_1[1])
# 改变数值
spam_1[0] = 'cap'
print(spam_1[0])
# 连接
spam_1 = spam + spam_1
spam = spam_1
print(len(spam))
print(len(spam_1))
# 删除 del
del spam[2]
print(len(spam))
# 循环取值
for name in spam:
print(name , end=(','), sep=(','))
print('')
for x in range(len(spam)):
print(str(x) + ' =', spam[x])
# 用 in 和 not in 操作符 来确定一个值是否在列表中
if 'cat' in spam:
print(True)
else:
print(False)
# 多重赋值
# 变量的个数要严格等于列表中的个数,否则报错
spam = spam[1:5]
name_1, name_2, name_3, name_4 = spam
print(name_1, name_2, name_3, name_4)
spam *= 2
print(len(spam))
# 用index()方法在列表中查找值
x = spam.index('cap')
print('the index of cap : ' + str(x))
# append() 和 insert() 方法在列表中添加值
# append() 是在列表尾部添加值
spam.append('cat');
print(spam)
# insert() 实在某个位置添加
spam.insert(1, 'insert')
print(spam)
# remove()方法从列表中删除值 从头只删除一个
spam.remove('cap')
print(spam)
# sort()方法将列表中的值排序 是用"ASCII"字符排序
# 正排
spam.sort()
print(spam)
# 反序
spam.sort(reverse = True)
print(spam)
# 元组数据类型
# 元组的数据类型几乎和列表数据类型一样,但是也有区别
# 元组使用括号
# 元组和字符串一样,它们的值不能被修改、添加、删除
spam_1 = ('cat', 'cap', 'map', 'net')
print(spam_1)
# 获取元组类型
print(type(spam_1))
# 下面的也是个元组,末尾带个逗号
spam_1 = ("hello",)
print(type(spam_1))
# list() 和 tuple()函数来进行转换类型
# list()转列表
# tuple()转元组
name = tuple(['cap', 'map', 'red'])
print(name)
name_1 = list(name)
print(name_1)
# 引用
# 将一个列表赋值给另一个变量时,实际上是将列表的”引用“赋给了该变量
# copy模块的copy() 和 deepcopy()函数
# 一层列表用copy()
# 二层列表用deepcopy()
import copy
spam = ['a', 'b', 'c']
spam_1 = spam.copy()
spam_1[0] = '1'
print(spam_1)
spam_2 = copy.copy(spam_1)
spam_2[0] ='2'
print(spam_2)