# 序列操作举例
# 序列包括字符串、列表和元组
import itertools
listed = [1, 2, 3]
listed *= 2
print(listed) # [1, 2, 3, 1, 2, 3]
print(id(listed)) # 2062263906432 对象的id,唯一
# 对象是否相等
x = "hello"
y = "hello"
print(x is y) # True
x = [1, 2, 3]
y = [1, 2, 3]
print(x is y) # False
# 是否包含、是否不包含
print("he" in "hello") # True
print("a" in ["a", "b"]) # True
print("a" not in ["a", "b"]) # False
# 删除对象
x = [1, 2, 3]
del x[0]
print(x) # [2, 3]
del x # 删除对象,该对象就不存在了
x = [1, 2, 3, 4, 5]
# 最小值
print(min(x)) # 1
# 最大值
print(max(x)) # 5
# 累加
print(sum(x)) # 15
print(sum(x, start=100)) # 115 指定初始值
# 获取序列长度,超长会报错
print(len(x)) # 5
# 排序
x = [3, 2, 1, 5, 4]
print(sorted(x)) # [1, 2, 3, 4, 5] 排序,生成新的列表,不修改原列表
x.sort() # 排序,改变原列表
print(x) # [1, 2, 3, 4, 5]
print(sorted(x, reverse=True)) # [5, 4, 3, 2, 1] 倒序排列,不修改原列表
x.reverse() # 倒序排列,改变原列表
print(x) # [5, 4, 3, 2, 1]
print(sorted("bacd")) # ['a', 'b', 'c', 'd']
# zip 缝合列表
x = [1, 2, 3]
y = [1, 2, 3]
ziped = zip(x, y)
print(list(ziped)) # [(1, 1), (2, 2), (3, 3)]
z = "hello"
print(list(zip(x, y, z))) # [(1, 1, 'h'), (2, 2, 'e'), (3, 3, 'l')]
print(list(
itertools.zip_longest(x, y, z))) # [(1, 1, 'h'), (2, 2, 'e'), (3, 3, 'l'), (None, None, 'l'), (None, None, 'o')]
# map 依次处理序列
mapped = map(ord, "hello")
print(list(mapped)) # [104, 101, 108, 108, 111]
mapped = map(pow, [2, 3, 4], [1, 2, 3])
print(list(mapped)) # [2, 9, 64]
# filter 根据判断条件过滤序列
my_filter = filter(str.islower, "Hello")
print(list(my_filter)) # ['e', 'l', 'l', 'o']