在程序的前面有一个错误,我试图找到它,但是我被要求解释在这部分代码中发生了什么。下面是代码和我认为它在做什么,但我对某些点不清楚。如果能对理解有所帮助,我们将不胜感激。
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使用'sec_%02d'中关于标题的其余部分(我认为这只是查找引用了标题的所有字符串?)。然后,它创建一个标题为“引用”的列表。
虽然我被括号里的部分搞糊涂了。如果我理解正确的话,它将cEdge (我认为它只是来自给定美国法律代码参考的一对数字的列表,即26 USC 501变成just (26,501) ),并询问secString在c点是否有值。
(这就是我感到困惑的地方;我猜测c点可能对应于上面示例中的26,而c1可能对应于501?当然,我甚至不确定我是否正确理解了c部分。)
如果c点已填满,则将其放入标题中。然后,它创建内部列表。该列表查看c1列表,并询问是否在secString中填充了标题,如果是,则将其放入此列表中。
我知道有些事情是有问题的,因为标题引用和内部引用似乎是同一个列表。
发布于 2012-10-17 10:53:39
secString = 'sec_%02d' % (title)字符串上的%运算符不是模运算符,它是一个格式化运算符,其行为类似于C的printf()。%02d是一种格式化代码,它将title格式化为两位数。如果title只有一个数字,那么它用一个0来填充它(例如,9变成09)。
(这就是我感到困惑的地方;我猜测c点可能对应于上面示例中的26,而c1可能对应于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。
最终结果是intraCitations包含来自cEdges的所有项的列表,其中第一项和第二项都包含子字符串sec_XY。
发布于 2012-10-17 10:47:51
如下所示的列表理解:
result = [element for element in list if element in set]等同于:
result = []
for element in list:
if element in set:
result.append(element)表达式element in set (在本例中为c[0]和c[1])是一个成员测试,如果element包含在set中,则为真。
至于您的代码的细节,titleCitations引用了文档title引用的资源1。intraCitations包含由(因为它们是从titleCitations中选择的)和reference title引用的文本。
1实际上,titleCitations和intraCitations都包含c中满足这些约束的元组。
发布于 2012-10-17 10:48:40
for title in titles:
secString = 'sec_%02d' % (title)将整数标题插入到用零填充的字符串中,使其长度为两个字符
titleCitations = [c for c in cEdges if secString in c[0]] 遍历cEdges的每个元素(这些元素本身就是列表),并且只包括第一个元素包含just build字符串的那些元素
intraCitations = [c for c in titleCitations if secString in c[1]]类似地,构建一个包含第二个元素包含secString的元素的titleCitations子列表
print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)打印书名、标题引用中元素的数量(可能是引用的次数)、引用的数量以及不是引用的titlecitations的数量(这表明一个是另一个的子集)
https://stackoverflow.com/questions/12926302
复制相似问题