2

在我试图查找的程序的前面有一个错误,但被要求解释这部分代码中发生了什么。下面是代码以及我认为它在做什么,但在某些方面尚不清楚。一些帮助理解将不胜感激。

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 变为 (26, 501),并询问 secString 在 c 中是否有值[0] 点。

(这是我感到困惑的地方;我猜 c[0] 点可能对应于上面示例中的 26,而 c[1] 对应于 501?当然我什至不确定我是否理解c 部分正确。)

如果 c[0] 位置已满,则将其放入 titlecitations 中。然后它会创建引文列表。此列表查看 titlecitations 列表并询问 secString 中是否填充了 c[1],如果是,则将其放入此列表中。

我知道有些东西有问题,因为那时标题引用和引用似乎是同一个列表。

4

3 回答 3

1
secString = 'sec_%02d' % (title)

字符串上的%运算符不是模数,它是一个格式化运算符,其行为类似于 C 的 printf()。%02d是格式化title为两位数的格式化代码。如果title只有一个数字,则用 a 填充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]]

现在它搜索我们在上一步中找到的东西,再次搜索 sub-string sec_XY

最终结果是intraCitations包含所有项目的列表,cEdges其中第一项和第二项都包含 substring sec_XY

于 2012-10-17T02:53:38.970 回答
0

列表理解,例如:

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]and c[1])是成员资格测试,如果element包含在set.

至于您的代码的具体细节,请titleCitations参阅文档引用的来源 [1] titleintraCitations包含由(因为它们是从 中选择的titleCitations)和 reference引用的文本title

[1] 实际上,titleCitations两者intraCitations都包含c满足这些约束的元组。

于 2012-10-17T02:47:50.893 回答
0
for title in titles:

    secString = 'sec_%02d' % (title)

将整数标题插入用零填充的此字符串中,使其长度为两个字符

    titleCitations = [c for c in cEdges if secString in c[0]] 

遍历 cEdges 的每个元素(它们本身就是列表)并且只包括那些第一个元素包含刚刚构建的字符串的元素

    intraCitations = [c for c in titleCitations if secString in c[1]]

同样,构建一个 titleCitations 子列表,其中包含第二个元素包含 secString 的那些元素

    print title, len(titleCitations), len(intraCitations), len(titleCitations) - len(intraCitations)

打印书名、titlecitations 中的元素数量(大概是被引用的次数)、Intracitations 的数量以及不是 intracitations 的 titleCitations 的数量(这表明一个是另一个的子集)

于 2012-10-17T02:48:40.200 回答