笔记:在做 Kazuma 项目的过程中

文章目录
  1. 1. 正则表达式
    1. 1.1. 规定动作
    2. 1.2. 常用语法
    3. 1.3. 常用链接
  2. 2. 回溯算法
  3. 3. 在列表中搜索某项
    1. 3.1. 在字典组成的列表中凭借字典某一个 key 的 value 找元素

Kazuma 是项目的研发代号。

正则表达式

规定动作

1
2
pattern = re.compile(r'REGEX')
result = pattern.findall(str)

常用语法

字符 描述
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
? 匹配前面的子表达式零次或一次。
? 当该字符紧跟在任何一个其他限制符(,+,?,{*n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
\s 匹配任何空白字符。
\S 匹配任何非空白字符。
  • (?<=前面但不要)regex(?=后面但不要)

常用链接

回溯算法

  • 将结果添加到 result 列表时,应添加 route 列表的副本 route[:]
1
self.result.append(arranged_XstuffsX[:])

在列表中搜索某项

在字典组成的列表中凭借字典某一个 key 的 value 找元素

通过 x for x in LIST if CONDITION 生成一个列表,取第一项即可。

1
result_dict = [i for i in all_i if i['id'] == target_id][0]

考虑空列表情况以及避免生成一个列表浪费时间,改用迭代器配合 next() 函数的办法。

1
result_dict = next((item for item in all_objs if item['id'] == target_id), None)

来自 StackOverflow