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简明教程

参考技术A [re.compile(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:输入方式不固定,主要规则部分实现

参考技术A

    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]python之tuple元组

Python中tuple()函数的基本语法是啥?

Python中的list与tuple集合

python的list中包含tuple,如何修改tuple中的元素?

Python中内置数据类型list,tuple,dict,set的区别和用法

[Python3]Tuple(元组)