python 中 tuple([re.compile(url) for url in urls]) 这句话是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 中 tuple([re.compile(url) for url in urls]) 这句话是啥意思相关的知识,希望对你有一定的参考价值。
tuple([re.compile(url) for url in urls]) 这句话是什么意思
首先要弄明白这几个函数1、tuple(sequence) -> tuple initialized from sequence's items
意思:使用括号内列表初始化一个元组,元组是不可变的
2、compile(pattern, flags=0)
Compile a regular expression pattern, returning a pattern object.
意思:编译一个正则表达式模式,返回一个模式对象
tuple([re.compile(url) for url in urls])从这句话中可知,
返回的是一个模式对象元组追问
re.compile(url) for url in urls 这句话要怎么解释,我看一般都是先for循环在前
追答python的语法支持这样的写法,比如
print [url for url in urls]
你可以参考一下python简明教程
用tuple把它转换成一个元组,可能怕被修改。
python的list中包含tuple,如何修改tuple中的元素?
输入:输入两组list,例如:A = [(1, 'a00', 1), (2, 'b', 0), (3, 'c', 1)], B = [(1, 'a'), (4, 'd')]
输出:将两组list按规则合并输出,例如:[(1, 'a', 1), (2, 'b', 0), (3, 'c', 1), (4, 'd', 0)]
规则:A中有B中tuple对应项的(B中(1, 'a'),对应A中(1, 'a00', 1)),将A中对应的tuple中第二项改为B中的第二项(将A中(1, 'a00', 1)中的'a00'改为'a',即(1, 'a', 1)),A中无B中tuple对应项的,新增到A中,末位补0(B中(4, 'd')在A中无对应项,新增到A中,末位补0,即(4, 'd', 0))
ps:输入方式不固定,主要规则部分实现
tuple是不变的。应当是生成新的tuple项添加了待输出的列表中。
根据规则,分别得到两个List[Tuple],然后合并即可
A = [...]
B = [...]
def b_in_a(b: tuple) ->bool:
....""""判断b子项是否能与A中某项对应"""
....for a in A:
........if a[0]==b[0] and a[1].startswith(b[1]):
............return True
....return False
def gen_item(a: tuple) -> tuple:
...."""生成输出项"""
....for b in B:
........if b_in_a:
............return b + (1,)
....return a[:2] + (0,)
def get_excess() -> list:
...."""得到B中不能与A对应的所有项"""
....return list(map(lambda _: _ + (0,),filter(lambda _: !b_in_a(_),B)))
lst_out = list(map(gen_item, A)) + get_excess()
print(lst_out)
以上是关于python 中 tuple([re.compile(url) for url in urls]) 这句话是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
python的list中包含tuple,如何修改tuple中的元素?