# 切片 slice
# python中的有序序列都支持切片，如列表，字符串，元组。
# 切片的返回结果类型和切片对象类型一致，返回的是切片对象的子序列，如：对一个列表切片返回一个列表，字符串切片返回字符串。
# 切片生成的子序列元素是源版的拷贝。因此切片是一种浅拷贝。
# 格式：li[start : end : step] start是切片起点索引，end是切片终点索引，但切片结果不包括终点索引的值。step是步长默认是1。

num = [1, 2, 3, 4, 5, ["a", "b", "c", ["d", "e"]]]
print("num=%s" % num)

# 这个切片表示获取从第三个元素到第六个元素的值，当前列表中只有5个元素，由于切片的性质顾头不顾尾，所以要取的最后一个值，就必须是6
print("num[3:6]=%s" % num[3:6])

# 从头开始取，取到第二个元素
print("num[:3]=%s" % num[:3])

# 取 索引为1 到 4的值，步长为2
print("num[1:5:2]=%s" % num[1:5:2])

# 表示取所有的值，步长为2
print("num[::2]=%s" % num[::2])

# 切片步长为负数，从后面往前面取值，相当于翻转了
print("num[::-1]=%s" % num[::-1])

# 注：步长为负数，前面为正数的，取出来为空
