Python划线知识点+题目解析

文章详细介绍了Python中的正则表达式(re)使用、filter函数的工作原理、__name__的作用、字符串方法如upper()和title()以及list的相关操作,包括索引、filter应用和位置参数的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题1:考察正则式re

import re
str1 = "Python's feature"
str2 = re.match(r'(.*)on(.*?) .*' , str1, re.M|re.I)
print(str2.group(1))    # 输出Pyth

re知识点:

  1. .(句点/点号):匹配任意单个字符,除了换行符 \n。换句话说,它表示可以匹配任意一个字符(字母、数字、特殊字符等),但不匹配换行符。

  2. *(星号):匹配前面的字符零次或多次。它表示前面的字符可以出现任意次数,包括零次。例如,a* 将匹配零个或多个连续的字符 'a'。

  3. ?(问号):匹配前面的字符零次或一次。它表示前面的字符可以出现零次(即不存在)或一次(即只出现一次)。例如,a? 将匹配零个或一个字符 'a'。

  4. (.*):表示贪婪匹配,会尽可能多地匹配满足条件的字符。其中,. 表示匹配任意单个字符(除了换行符 \n),而 * 表示前面的字符可以出现零次或多次。

  5. (.*?):表示非贪婪匹配,会尽可能少地匹配满足条件的字符。其中,. 表示匹配任意单个字符(除了换行符 \n),而 * 表示前面的字符可以出现零次或多次。

  6. re.M(多行模式):使^$元字符匹配每一行的开头和结尾。如果不使用re.M标志,^将只匹配字符串的开头,$将只匹配字符串的结尾。

  7. re.I(忽略大小写):在进行匹配时忽略大小写。例如,如果匹配模式是'cat',则re.I标志将使其同时匹配'cat''Cat''cAt'等。

题2 考察filter函数

# 要求输出[2,4,6,8,10]
No.1
a = [1,2,3,4,5,6,7,8,9,10]
print(a[1::2]) # 索引1开始,索引号依次加2,索引号为1,3,5,7,9,输出[2,4,6,8,10]

# No.2
a = [1,2,3,4,5,6,7,8,9,10]
lis = []
for i in a:
    if i % 2 == 0:    # 取数组中的偶数
        lis.append(i)
print(lis)            # 输出[2,4,6,8,10]

# No.3
a = [1,2,3,4,5,6,7,8,9,10]
print(list(filter(lambda x:x%2==0,a))) 
""" filter函数分为两步,第一步将a中每个值进行运算,得到布尔列表,跟着根据布尔列表中的值取出a,其效果如下面这行代码"""
[a[i] for i in range(len(a)) if list(map(lambda x:x%2==0,a))[i]]    # list comprehension

# No.4
a = [1,2,3,4,5,6,7,8,9,10]
def is_odd(n):
    return n%2==0
print(list(filter(is_odd,a)))    # 注意filter要求的是函数体,不是方法调用,因此不用括号

 题目3 考察 __name__

# print_func.py 代码如下
print('Hello World!')
print('__name__value:', __name__)

def main():
    print('This message is from main function')

if __name__ == '__main__':
    main()

# print_module.py的代码如下
import print_func
print("Done!")

输出:

 题目4:考察str的方法

# upper()全大写,title()首字母大写,其余小写,自动识别分隔的字母(数字或空格)
strs = 'abcd12efg'
print(strs.upper().title()) # output:Abcd12Efg

strs = 'abcd efg'
print(strs.upper().title()) # output:Abcd Efg

strs = 'abcd 12 efg'
print(strs.upper().title()) # output:Abcd 12 Efg

题目5 list索引

lists = [1,2,3,4,5,6]
print(lists[6:])    # [],如果是print(lists[6])报错 IndexError: list index out of range

题目6 filter

func = lambda x:x%2
a = [1,2,3,4,5,6]
result = filter(func, a) 
print(list(result))    # [1,3,5]

"""filter函数道理同[a[i] for i in range(len(a)) if list(map(func,a))[i]],第一步取布尔列表,第二步掩码数组取值"""

题目7 位置参数

def fun(a,*,b):
    print(b)
fun(1,2,3,4)     # 报错,*表示后面必须是关键字参数, 另外/ 前面必须是位置参数

题目8 list常用方法

# .append()
my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # Output: [1, 2, 3, 4]

# .extend()
my_list = [1, 2, 3]
other_list = [4, 5, 6]
my_list.extend(other_list)
print(my_list)  # Output: [1, 2, 3, 4, 5, 6]

# .insert()
my_list = [1, 2, 3]
my_list.insert(1, 10)
print(my_list)  # Output: [1, 10, 2, 3]

# 集合 .add()
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # Output: {1, 2, 3, 4}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值