******
20230308
******
# 数据结构 (Data Structure)
# 数据结构的一些技巧 : 多重循环,推导式,循环列表时获取元素的索引
# *******************************************************************************
# 多重循环
num_list = [2,1,4,3,6,5,7]
print(sorted(num_list)) # sorted 函数按照长短,大小,英文字母顺序给每个列表中的元素进行排序
print(sorted(num_list,reverse=True)) # reverse=true时,列表按照逆序整理
str = ['a','b','c','d','e','f','g']
num = [1,2,3,4,5,6,7]
for a,b in zip(num,str): # 在整理列表的过程中,如果同时需要整理两个列表,则可用zip函数.
print(b,'is',a)
# *******************************************************************************
# 推导式 (List comprehension)(另外叫法:列表的解析式)
a = []
for i in range(1,11): # 把10个元素装进列表的"普通写法"
a.append(i)
print(a)
b = [i for i in range(1,11)] # 用“列表解析式”写法把10个元素装进列表
print(b)
# 看以下例进一步理解列表解析式: list = [item for item in iterable]
a = [i**2 for i in range(1,10)] # 在列表a中通过for循环依次放入‘i**2’九个元素
print(a)
b = [j+1 for j in range(1,10)] # 在列表b中通过for循环依次放入‘i+1’九个元素
print(b)
c = [n for n in range(1,10) if n % 2 ==0] # 在列表b中通过for循环和if条件判断依次放入‘1~9’中的偶数元素
print(c)
d = [letter.lower() for letter in 'ABCDEFGHIJKLMN'] # lower() 方法转换字符串中所有大写字符为小写
print(d)
# 字典推导式的方式与列表推导式方式略有不同,因为创建列表必须满足‘键-值’的两个条件才能达成
e = {i:i+1 for i in range(4)}
print(e)
f = {i:j for i,j in zip(range(1,6),'abcde')}
print(f)
g = {i:j.upper() for i,j in zip(range(1,6),'abcde')} # upper() 方法转换字符串中所有小写字符为大写
print(g)
# *******************************************************************************
# 循环列表时获取元素的索引
letters = ['a','b','c','d','e','f','g']
for num,letter in enumerate(letters): # 列表是有序的,可以用enumerate()函数进行遍历元素
# for num,letter in enumerate(letters,0): # 与上一行的功能是一样的
print(letter,'is',num + 1)
# *******************************************************************************