# list型
# 作用:按位置存放多个值
l1 = [1, 1.2, "aaa", ["bbb", "ccc"], {"k1": "sss", "k2": "ttt"}]
print(type(l1))

# 类型转换
# 能够被for循环遍历的类型都可以当作参数传给list()转换成列表
res = list("hello")     # 原理:for循环遍历 ['h', 'e', 'l', 'l', 'o']
print(res)

res = list({"k1": "sss", "k2": "ttt"})      # 循环字典取得key ['k1', 'k2']
print(res)

# 内置方法
# 优先掌握的操作
# -----------------------------------
#   .按索引取值(正向存取,反向存取):可以取也可以改
l1 = [111, "sepia", "hello"]
print(l1[1])
print(l1[-1])

# 列表中追加值
l1.append("aaa")
print(l1)

# 列表中插入值
l1.insert(1, "alex")        # insert(插入位置, 插入内容)
print(l1)

# 列表中追加可迭代的值
new_l = [1,2,3]
for a in new_l:
    l1.append(a)
print(l1)

l1.extend(new_l)
print(l1)

# 列表中删除值
# 方式1
del l1[1]
print(l1)

# 方式2: .pop()根据索引删除,不指定索引默认从末尾删除
res = l1.pop(1)
print(l1)
print(res)  # 返回被删除的值

# 方式3: .remove()根据元素删除,返回None
l1.remove("aaa")
print(l1)

# -----------------------------------
# 切片
l1 = [0, 1, 2, 3, 4, 5, 6, 7]
print(l1[0:3])
print(l1[0:5:2])

# 反转
print(l1[::-1])

# 判断在列表中
print(1 in l1)

# 需要掌握的操作
# -----------------------------------
l1 = [1, "aaa", "bbb", "aaa", "ddd"]
# 1. l.count()
print(l1.count("aaa"))

# 2. l.index()   找不到时报错
print(l1.index("bbb"))

# 3. l.clear()   清空列表


# 4. l.reverse() 反转列表
l1.reverse()
print(l1)

# 5. l.sort()    默认升序
#    l.sort(reverse=True)   降序
l1 = [11, 2, -3, 5, 9]
l1.sort()
print(l1)