List Comprehension 列表生成式为 Python 内建的,相当强大且简单就能生成 list
的方法,今天会先介绍一下 loop,再来介绍生成式的各种使用方法。
可以使用 for
loop 来把 list
的每一个元素都跑一遍。
list1 = ['酷哥', '辣妹', '小哥', '小姐']
for x in list1:
print(x)
也可以用 len()
先取出 list
的长度,再用 index 来做
list1 = ['酷哥', '辣妹', '小哥', '小姐']
for x in range(len(list1)):
print(list1[x])
或是使用 while
loop 来做,一样用 len
取出这个 list
的长度,再根据 index 取值
list1 = ['酷哥', '辣妹', '小哥', '小姐']
i = 0
while i < len(list1):
print(list1[i])
i += 1
如果我想要生成 [1, 2, 3, 4, 5] 的一个 list
,可以使用以下四种方法。
使用 list.append()
函式,来一个一个输入
a = []
a.append(1)
a.append(2)
a.append(3)
a.append(4)
a.append(5)
print('a =', a)
使用 range
来生成 1 - 5,并用 append
按照回圈加入 list
当中
b = []
for i in range(1, 6):
b.append(i)
print('b =', b)
使用 range
来生成 1 - 5,并直接用 list()
转为 list
c = list(range(1, 6))
print('c =', c)
简化过後可以变为这样
d = [x for x in range(1, 6)]
print('d =', d)
如果要生成 [1^2, 2^2, 3^2, ..., 10^2]
1 到 10 的平方
a = []
for x in range(1, 11):
a.append(x ** 2)
print('a =', a)
可以把上面的 code 简化成底下的样子
b = [x ** 2 for x in range(1, 11)]
print('b =', b)
撰写升成式时,需要记得要把「要生成的元素」放在前面,後面放 for
loop
在生成式里面加入判断条件:只要偶数的平方的话,加一个 if x % 2 == 0
就搞定了
b = [x ** 2 for x in range(1, 11) if x % 2 == 0]
print('b =', b)
双层生成式
for
前面当作 str
进行撰写,并用双层生成式来排列出所有可能性
c = [a + b for a in '123' for b in '456']
print(c)
昨天的文章中有提到用 for
loop 可以一次把 dict
中的整个 item
取出,并放在两个变数之中,这里也可以用在列表生成式。
# 昨天的 code
dict2 = {'a':'A', 'b':'B', 'c':'C'}
for x, y in dict2.items():
print(x, y)
dict2 = {'a':'A', 'b':'B', 'c':'C'}
list2 = [x + '=' + y for x, y in dict2.items()]
print(list2)
加上 String Methods 一起使用
list1 = ['apple', 'banana', 'orange']
list2 = [x.capitalize() for x in list1] # 把字串字首变为大写的函式
print(list2)
list.sort
:排序 list
内的元素list.sort()
预设的 .sort()
是升幂排序的,数字会由小到大,英文字母由 a 到 z
list1 = ['z', 'b', 'zb', 'za', 'osww', 'gegw']
list1.sort()
print(list1)
list2 = [23, 45, 69, 64, 33, 335, 3]
list2.sort()
print(list2)
reverse = True
如果想要降幂排序,则加上 reversr = True
在括号内即可
list1 = ['z', 'b', 'Zb', 'za', 'osww', 'gegw']
list1.sort(reverse = True)
print(list1)
list2 = [23, 45, 69, 64, 33, 335, 3]
list2.sort(reverse = True)
print(list2)
key
:可以自订你的排列方式
底下的程序为:根据他们的平方大小来排序
def myfunc(x):
return x ** 2
list2 = [-1, -6, 69, 64, -33, 335, 23]
list2.sort(key = myfunc)
print(list2)
若在加上 reverse = True
就可以把输出改为降幂
def myfunc(x):
return x ** 2
list2 = [-1, -6, 69, 64, -33, 335, 23]
list2.sort(key = myfunc, reverse = True)
print(list2)
待续...
<<: [Day25] Rocket 序列化和反序列化以及 POST (Part 2)
>>: Day 14:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《云端情人》part1
※ 今天的内容 一、清单表格:QTable、QMarkupTable 二、弹出视窗:QDialog、...
bucket sort(桶排序) 假设输入平均分布,也就是输入的阵列每一种组合情况都是机率均等的,平...
处理申购 VC 的资料,是由 StockSubscriptionModel 处理的。 在前面,我们在...
虽然 browser 下方的工具列已经添加了上下按钮,可以在不卷动画面的情况下,往下一页或往上一页,...
多数企业营运之初,公司多采用各种独立的简易工具来管理不同的企业流程,例如Excel试算表。但随着业务...