from collections.abc import Iterable
#列表list
# -------------------------------------------创建列表-------------------------------------------
list_1 = []
list_2 = ["p",2,["Y","T"],5,{"o"},{"N":3}] li_1 = list("python") #list()函数接收可迭代的数据
li_2 = list(list_2)
# 可迭代的对象: 字符串、列表、集合、字典、文件
isinstance(list_2, Iterable)#isinstance()函数. 里面两个参数,第一个参数: 对象. 第二个参数: 类型
#-----------------------------访问列表元素----------------------------
#list[n] 访问列表中索引为n的元素
print(list_2[2]) # 正向索引
print(list_2[-1]) # 反向索引
# list[m:n:step] 切片.按步长step获取列表中索引m~n对应的元素(不包括list[n])
print(list_2[1:4:2]) #步长为2.获取索引1~4对应的元素
print(list_2[1:]) #获取索引1~末尾对应的元素 print(list_2[:4])
#获取索引0~4对应的元素
print(list_2[:]) #获取所有元素
# 循环访问 for...in...
#查询列表元素
print(2 in list_2)
print(5 not in list_2)
#--------------------------------------------添加列表元素(增)----------------------------------
# append()方法; 在列表末尾添加元素
list_2.append(6) #直接改变list的值
print(list_2)
string = "python"
new_string = string.replace("y","t") #字符串不可变.只能返回新字符串
print(string)
print(new_string)
# extend()方法: 在列表末尾添加另一个列表的元素
print(li_1)
list_3 = list_2
list_3. extend(li_1)
print(list_2)
# insert()方法: 将新元素插入到指定位置
list_3.insert(2,"word")
print(list_3)
# 注意!!!!!
# list可以改变
print(list_2)
print(list_3)
# -----------------------------------------元素排序---------------------------------------------
#sort(key=None,reverse=False)方法: 按特定顺序对列表元素排序
# key参数: 列表支持的函数.默认微微NONE
#reverse参数: 控制元素排列方式.默认False 表示升序排列
list_4 = [4,5,1,8,0,3,7]
list_4.sort() #升序排列
print(list_4)
list_4.sort(reverse=True)
print(list_4)
# key支持函数,字符串可以用len. print(len("python"))
list_5 = ["python","java","C++","php"]
list_5.sort(key = len)
print(list_5) #sorted()函数不会对原则列表产生影响
list_6 = [4,5,1,8,0,3,7]
li = sorted(list_6)
print(list_6)
print(li)
#reverse()方法,逆置列表
list_5.reverse()
print(list_5)
#-----------------------------------------删除列表元素(删)-------------------------------------
#1. del语句. 用于删除列表中指定位置的元素
list_7 = ["python","java","C++","php"]
del list_7[1]
print(list_7)
#2、 remove()方法, 用于移除列表中某个元素(只移除第一个)
list_8 = ["python","java","C++","php","java"]
list_8.remove("java")
print(list_8)
#3.pop()方法.用于移除列表中某个元素. 一般不指定元素. 去移除列表最后一个元素
list_9 = ["python","java","C++","php","java"]
print(list_9.pop()) #移除列表中最后一个元素
print(list_9)
print(list_9.pop(1)) #移除列表中索引为1的元素
print(list_9)
#4、 clear()方法, 用于清空列表. 注意和del删除列表区
list_9.clear()
print(list_9)
#----------------------------------------------列表推导式---------------------------------------
# 基础语法:[exp for x in list]
ls = [1,2,3,4,5,6,7,8]
ls = [data*data for data in ls]
print(ls)
#带if语句: [exp for x in list list1 for y in list2]
ls = [data for data in ls if data>4]
print(ls)
# 嵌套for循环:[exp for x in list1 for y in list2]
ls_one = [1,2,3]
ls_two = [4,5,6]
ls_three = [x+y for x in ls_one for y in ls_two]
print(ls_three)
#-------------------------------------------创建nxn列表,并索引----------------------------------
n = 5
magic_square = [[0 for x in range(n)]
for y in range(n)]
print(magic_square)
print(magic_square[0][1])