鱼C论坛

 找回密码
 立即注册
查看: 716|回复: 0

[学习笔记] 零py-(ep-11)

[复制链接]
发表于 2023-8-2 10:19:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Nicole37 于 2023-8-2 10:19 编辑


列表2:(增、删、改、查)
增:
1、append() :在列表末尾添加元素  注意:append只能每次添加一个元素
e.g
a = ["晚上","吃啥"]
a.append("呢")
a
['晚上', '吃啥', '呢']
2、extend() :其参数必须是一个可迭代对象,新的内容是追加到原列表最后一个元素的后面
e.g
a.extend(["冰粉","卷凉皮","甜品"])
a
['晚上', '吃啥', '呢', '冰粉', '卷凉皮', '甜品']
3、切片方法可代替append和extent :
e.g
a[len(a):] = ["快餐","赤豆元宵","混沌"]
a
['晚上', '吃啥', '呢', '冰粉', '卷凉皮', '甜品', '快餐', '赤豆元宵', '混沌']
4、insert() :在列表的任意位置添加数据,两个参数,参数1 是位置索引值,参数2 是待插入的元素
e.g
a.insert(4,"或者")
a
['晚上', '吃啥', '呢', '冰粉', '或者', '卷凉皮', '甜品', '快餐', '赤豆元宵', '混沌']
a.insert(0,"今天")
a
['今天', '晚上', '吃啥', '呢', '冰粉', '或者', '卷凉皮', '甜品', '快餐', '赤豆元宵', '混沌']
a.insert(len(a),"?")
a
['今天', '晚上', '吃啥', '呢', '冰粉', '或者', '卷凉皮', '甜品', '快餐', '赤豆元宵', '混沌', '?']

删:
1、remove() :将指定元素删除
e.g
a.remove("赤豆元宵")
a
['今天', '晚上', '吃啥', '呢', '冰粉', '或者', '卷凉皮', '甜品', '快餐', '混沌', '?']
注意:列表中存在多个匹配的元素,remove只会删除第一个;若指定删除的元素本身不存在,则程序报错
2、pop() :删除指定位置的元素,参数是位置索引值
e.g
a.pop(8)
'快餐'
a
['今天', '晚上', '吃啥', '呢', '冰粉', '或者', '卷凉皮', '甜品', '混沌', '?']
3、clear() :清除列表全部元素
e.g
a.clear()
a
[]

作业题:
1、
 s = [1, 2, 3]
 s.append([4, 5, 6])
不会报错。因为 Python 的列表是支持任何类型的对象,当然也包括列表啦。不过添加之后,s 列表的值会变成 [1, 2, 3, [4, 5, 6]],第 4 个元素是另外一个列表
2、
a = [1,2,5,8]
a.extend(["tired"])
a     
[1, 2, 5, 8, 'tired']
a.extend("tired")
a
[1, 2, 5, 8, 'tired', 't', 'i', 'r', 'e', 'd']
extend的参数需要是一个可迭代对象,然后将可迭代对象的元素依次插入到列表中,而列表本身["tired"]中只有一个元素,而字符串“tired”包含5个元素
3、判断括号是否匹配的问题:应用特殊的列表,
0. 请编写一个程序,判断给定的字符串 s 中括号的写法是否合法。

条件:

字符串仅包含 '('、')'、'['、']'、'{'、'}' 这三对括号的组合
左右括号必须成对编写,比如 "()" 是合法的,"(" 则是非法的
左右括号必须以正确的顺序闭合,比如 "{()}" 是合法的,"{(})" 则是非法的

想要解决括号匹配问题,我们需要额外使用一个特殊的列表来作为临时存储。

这个列表之所以特殊,是因为我们对其做了相关规定:

从前往后填入数据
从后往前提取数据

“从前往后填入数据”这是正常行为,append() 方法即可实现;”从后往前提取数据”听着新鲜,可是咱转念一想,这一节课提到的 pop() 方法也正合适。
s = input("请输入测试字符串:")

# 创建一个特殊列表
stack = []

for c in s: 
    if c == "(" or c == "[" or c == "{": # 如果是左括号 ,那么添加到特殊列表中 #
        stack.append(c)
    else:
        #如果是右括号,但特殊列表中没有左括号,则一定是非法的
        if len(stack) == 0:
            print("非法")
            break
     #判断当出现右括号时,将特殊列表的最后一位弹出,判断是否与该右括号相匹配
        if c == ')':  #d是辅助变量,用来判断弹出的是否匹配
            d = '('
        elif c == ']':
            d = '['
        elif c == '}':
            d = '{'

        if d != stack.pop():# 对比 d 和从特殊列表尾部弹出的元素 #:
            print("非法T_T") #如果不等则证明无法匹配
            break
else:
    if len(stack) == 0:  #for else:在整个for循环走完一遍后才执行else,如果中途从break退出,则连后面的else也一起跳出
        
        print("合法")  #如果整个循环走完以后 特殊列表中还有元素,证明左括号比右括号数量多,自然不合法
    else:
        print("非法")  #整个循环结束应该左右括号一一匹配,左括号应该一一弹出,最终的特殊列表应为空

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
python爱好者. + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表