Python 解释;[c代表cEdges中的c,如果c[0]中的secString为c]";
我尝试查找的程序前面有一个错误,但被要求解释代码这一部分中发生了什么。下面是代码和我认为它在做什么,但在某些方面我不清楚。如能帮助理解,将不胜感激Python 解释;[c代表cEdges中的c,如果c[0]中的secString为c]";,python,syntax,list-comprehension,Python,Syntax,List Comprehension,我尝试查找的程序前面有一个错误,但被要求解释代码这一部分中发生了什么。下面是代码和我认为它在做什么,但在某些方面我不清楚。如能帮助理解,将不胜感激 for title in titles: secString = 'sec_%02d' % (title) titleCitations = [c for c in cEdges if secString in c[0]] intraCitations = [c for c in titleCitations if secSt
for title in titles:
secString = 'sec_%02d' % (title)
titleCitations = [c for c in cEdges if secString in c[0]]
intraCitations = [c for c in titleCitations if secString in c[1]]
print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)
首先,secString获取与title相关的'sec_uu%02d'
的剩余部分(我认为这只是查找所有引用title的字符串?)。然后创建一个标题列表
虽然我被括号里的部分弄糊涂了。如果我理解正确,它会使用cEdge,我认为它只是给定美国法律代码参考中的一对数字的列表,即26 USC 501变为just(26,501),并询问secString是否在c[0]点有值
(这就是我感到困惑的地方;我猜c[0]点可能对应于上述示例中的26,c[1]将对应于501?当然,我甚至不确定我是否正确理解了c部分。)
如果c[0]点已填满,则将其放入滴定中。然后,它将创建“内吸”列表。此列表查看标题列表,询问是否在secString中填写了c[1],如果是,则将其放入此列表中
我知道有些东西有问题,因为标题和插图似乎是同一个列表。列表理解,例如:
result = [element for element in list if element in set]
相当于:
result = []
for element in list:
if element in set:
result.append(element)
集合中的表达式元素(在您的例子中,c[0]
和c[1]
)是一个成员资格测试,如果元素
包含在集合
中,则为真
至于您的代码的细节,标题说明
指的是文档标题
引用的来源[1]<代码>标题包含引用的文本(因为它们是从标题
中选择的)和引用标题
[1] 实际上,titlections
和intractions
都包含c
中满足这些约束的元组
for title in titles:
secString = 'sec_%02d' % (title)
将整数标题插入此字符串,并用零填充,使其长度为两个字符
titleCitations = [c for c in cEdges if secString in c[0]]
遍历cEdges的每个元素(它们本身就是列表),只包括第一个元素包含字符串justbuild的元素
intraCitations = [c for c in titleCitations if secString in c[1]]
类似地,构建titlections的子列表,其中包含第二个元素包含secString的元素
print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)
打印书名、标题中元素的数量(可能是引用的次数)、插入的数量以及非插入的标题数量(这表明其中一个是另一个的子集)
字符串上的%
运算符不是模数,它是一个格式化运算符,其行为类似于C的printf()<代码>%02d是一种格式化代码,将标题
格式化为两位数。如果title
仅为一位数字,则它会将其填充为0
(例如,9变为09
)
(这就是我感到困惑的地方;我猜c[0]点可能对应于上述示例中的26,c[1]将对应于501?当然,我甚至不确定我是否正确理解了c部分。)
这是正确的
titleCitations = [c for c in cEdges if secString in c[0]]
这将搜索cEdges
中的项目,并查找标题中包含字符串sec_XY
的项目,其中XY是前面的两位数
intraCitations = [c for c in titleCitations if secString in c[1]]
现在它搜索我们在上一步中找到的内容,再次搜索子字符串sec_XY
最终结果是,
intractions
包含来自cEdges
的所有项目的列表,其中第一个和第二个项目都包含子字符串secu XY
也许您可以打印出cEdges
是什么,并添加一个示例,以便清楚发生了什么?秒%02d'(标题)
是字符串格式。它将title
插入到该字符串中,但要确保填充了零:sec_01
,sec_99
。非常感谢您用如此清晰详细的语言解释这一点,并对其进行了编辑,使其更有意义。
intraCitations = [c for c in titleCitations if secString in c[1]]