今天终于来到了列表的最后一节课,同时也教授元组这个概念。列表最后一节课主要是列表的循环-分支,嗯,没错,又是圆环套圆环系列。

通过分支,可以将循环语句中的列表,进行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日

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据