今天终于来到了列表的最后一节课,同时也教授元组这个概念。列表最后一节课主要是列表的循环-分支,嗯,没错,又是圆环套圆环系列。
通过分支,可以将循环语句中的列表,进行if操作。
如,题目是:#判断列表里的元素为“F”开头。
even = ["great","fishc","brilliant","excellent","fantistic"]
feven = [w for w in even if w[0] == "f"]#优先级:第一是for w in even,第二是w if w[0] == "f",第三是最外侧的“w”(等于feven = w)。
这就是一个最简单的判断句式(虽然我后面还是看了答案才判断出来的)。
拆解成常用的循环语句的话:
for w in even :
if w [0] == "f":
feven = w [0]
列表循环还有其他玩法,比如将一个二维列表转化为普通列表。
#列表循环,将二维列表展开
#方法一:
nub = [[1,2,3],[4,5,6],[7,8,9]]
chui = [wang for da in nub for wang in da]
#方法二(拆解循环):
flatten = []
for row in nub:
for col in row:
flatten.append(col)
print(flatten)
列表里还可以多加几个判断分支,配上列表推导式,让一个语句看起来突出一个复杂。是的,虽然列表推导式非常省资源,效率也非常高,但是因为缺少了直观的层级关系,导致可读性是真的不强。
#分支
[[x,y] for x in range(10) if x % 2 == 0 for y in range(10) if y % 3 ==0]
#但是如果拆出来的话就会容易看一些:
for x in range(10):
if x % 2 == 0:
for y in range(10):
y % 3 == 0
print([x, y])
要是论写起来,毫无疑问是第一种更爽一点。但是如果是看起来,显然第二种会舒服的多。
第一节课一如既往的复杂,第二节课换了一个新东西,就简单一些了。
元组,跟列表很像的序列。因为元组不可修改,所以复杂程度比列表低很多。
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号 ( ),列表使用方括号 [ ]。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
元组中的元素虽然是不可变的,但如果元组中的元素是指向一个可变的列表,那么依然可以修改列表里的内容的。
haha = (1,2,3,4,5,6,7,8)
oho = haha.count(3) #查询元组里有几个3
oho.index(3) #查询”3“的下标
lele = (9,10)
haha+lele #将两个元组拼接
lele * 3 #将该元组重复三次
hehe = haha,lele #元组嵌套
for each in haha: #元组也支持迭代
print(each)
for i in hehe: #嵌套循环
for each in i:
print(each)
#元组适用于列表推导式
s = (1,2,3,4,5)
[each * 2 for each in s]
#生成一个元素的元组
x = (520,)
#元组的打包
momo = (123,"fishc",3.14)
#元组的解包(也适用于列表)
x,y,z = momo
#对字符串进行拆解
a,b,c,d,e,f = "wangda"
#对元组里的列表进行修改
alala = [0,1,2]
blblb = [3,4,5]
clclc = (alala , blblb)
clclc[1][1] = "新垣结衣" #输出为“([0, 1, 2], [3, '新垣结衣', 5])”
简单来说,列表怎么玩,元组也基本上可以怎么玩,只是元组里的元素如果是不可变元素的话,就不能修改。如果是可变列表的话,就可以改。其他的区别不大。
今天算是把列表的课程学完了,真是觉得列表的复杂程度非常高,即使把课程都学了一遍,也没办法说自己真懂列表。还是得靠不停的巩固和复习才行。
欢挺。
胭惜雨
2020年12月28日