ls1 = []
print(ls1,type(ls1)) # [] <class 'list'>

# 列表中可以出现重复数据
ls2 = [1,3,2,2,3,1]
print(ls2) # [1, 3, 2, 2, 3, 1]

# 列表中可以出现不同类型的数据
ls3 = [1,3.14,True,(),{}] # => () 空元组,但只包含一个元素的元组表示方式(元素,) {} 空字典
print(ls3)
# 列表通过索引取值(索引从0开始)
#res = ls3[4] # {}
res = ls3[-1] # {}
print(res,type(res)) # {} <class 'dict'>

# 只包含一个元素的元组表示方式(元素,)
x = (1,)
print(x,type(x)) # (1,) <class 'tuple'>

# 切片
res = ls3[1:3]
print(res) # [3.14, True]

# 判断
#print("3.14" in ls3# False 字符串与float不一样
#print(3.14 in ls3)# True


# 列表的增删改查
# append(o) | insert(i,o) | remove(o) | pop(i) |clear()

ls5 = [1,2]
print(ls5)

# 查
print(ls5[1])

# 改
ls5[1] = "2"
print(ls5)

# 增
## 增加到末尾
ls5.append(3)
print(ls5)
## 增加到指定位
ls5.insert(1,True) # 将元素True增加到第一位
print(ls5)

## 将指定元素删除
ls5.remove("2") # 参数为True
print(ls5)

##通过索引删除
ls5.pop(1)
print(ls5)

## 清空
ls5.clear()
print(ls5)

#排序:集合中存放的是可以排序的统一数据类型

ls6 = [3,1,4,2,5]
print(ls6)
ls6.sort() # 排序操作的是列表本身,列表会发生变化,所以排序不需要返回值
print(ls6)
# [3, 1, 4, 2, 5]
# [1, 2, 3, 4, 5]
# 设置是否逆向排序
ls6.sort(reverse=True)
print(ls6)
# [5, 4, 3, 2, 1]