Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么要多次打印而不是只打印一次?_Python - Fatal编程技术网

Python 为什么要多次打印而不是只打印一次?

Python 为什么要多次打印而不是只打印一次?,python,Python,我有一个\n分隔字符串(strings.txt)的输入列表,我试图将每个字符串与输入文件(infielist.tsv)中的一行匹配一次,并将每一行打印到一个新文件(outfile.tsv) 我的outfile.tsv只打印了infielist.tsv,打印次数与我搜索的输入字符串相同,而不是一次。我的for(for)循环不正确地只与infielist.tsv文件相乘,而不是与单个匹配行相乘,这有什么问题 示例脚本 strings.txt 填充列表 outfile.tsv 是一个双for循环。对于

我有一个\n分隔字符串(strings.txt)的输入列表,我试图将每个字符串与输入文件(infielist.tsv)中的一行匹配一次,并将每一行打印到一个新文件(outfile.tsv)

我的outfile.tsv只打印了infielist.tsv,打印次数与我搜索的输入字符串相同,而不是一次。我的for(for)循环不正确地只与infielist.tsv文件相乘,而不是与单个匹配行相乘,这有什么问题

示例脚本 strings.txt 填充列表 outfile.tsv 是一个双for循环。对于列表中的每个项目,
inlist
,它将遍历
tsvin
中的每一行

因此,这不仅仅是在
tsvin
中迭代一次,而是重复迭代
len(inlist)
次数


相反,您可以通过
tsvin
,通过一次迭代来实现目标:

with open('strings.txt', 'rb') as inlist, open('infilelist.tsv', 'rb') as tsvin, open('outfile.tsv', 'wb') as outobj:
    seen = set([line.strip() for line in inlist])
    for line in tsvin:
        if line.split('\t', 1)[0] in seen:
            outobj.writelines(line)
注意

seen = set([line.strip() for line in inlist])
正在创建一组列表中的所有行

line.split('\t', 1)[0] in seen
将选项卡上的
tsvin
中的行最多拆分1次,并检查第一部分是否在集合
seen
中,同时检查列表中的成员身份是
O(n)
。因此,您可以通过将
seen
设置为
集合而不是
列表来节省一些时间

是一个双for循环。对于列表中的每个项目,
inlist
,它将遍历
tsvin
中的每一行

因此,这不仅仅是在
tsvin
中迭代一次,而是重复迭代
len(inlist)
次数


相反,您可以通过
tsvin
,通过一次迭代来实现目标:

with open('strings.txt', 'rb') as inlist, open('infilelist.tsv', 'rb') as tsvin, open('outfile.tsv', 'wb') as outobj:
    seen = set([line.strip() for line in inlist])
    for line in tsvin:
        if line.split('\t', 1)[0] in seen:
            outobj.writelines(line)
注意

seen = set([line.strip() for line in inlist])
正在创建一组列表中的所有行

line.split('\t', 1)[0] in seen
将选项卡上的
tsvin
中的行最多拆分1次,并检查第一部分是否在集合
seen
中,同时检查列表中的成员身份是
O(n)
。因此,您可以通过将
seen
设置为
集合而不是
列表来节省一些时间

是一个双for循环。对于列表中的每个项目,
inlist
,它将遍历
tsvin
中的每一行

因此,这不仅仅是在
tsvin
中迭代一次,而是重复迭代
len(inlist)
次数


相反,您可以通过
tsvin
,通过一次迭代来实现目标:

with open('strings.txt', 'rb') as inlist, open('infilelist.tsv', 'rb') as tsvin, open('outfile.tsv', 'wb') as outobj:
    seen = set([line.strip() for line in inlist])
    for line in tsvin:
        if line.split('\t', 1)[0] in seen:
            outobj.writelines(line)
注意

seen = set([line.strip() for line in inlist])
正在创建一组列表中的所有行

line.split('\t', 1)[0] in seen
将选项卡上的
tsvin
中的行最多拆分1次,并检查第一部分是否在集合
seen
中,同时检查列表中的成员身份是
O(n)
。因此,您可以通过将
seen
设置为
集合而不是
列表来节省一些时间

是一个双for循环。对于列表中的每个项目,
inlist
,它将遍历
tsvin
中的每一行

因此,这不仅仅是在
tsvin
中迭代一次,而是重复迭代
len(inlist)
次数


相反,您可以通过
tsvin
,通过一次迭代来实现目标:

with open('strings.txt', 'rb') as inlist, open('infilelist.tsv', 'rb') as tsvin, open('outfile.tsv', 'wb') as outobj:
    seen = set([line.strip() for line in inlist])
    for line in tsvin:
        if line.split('\t', 1)[0] in seen:
            outobj.writelines(line)
注意

seen = set([line.strip() for line in inlist])
正在创建一组列表中的所有行

line.split('\t', 1)[0] in seen

将选项卡上的
tsvin
中的行最多拆分1次,并检查第一个部分是否在集合
seen
中,同时检查列表中的成员身份是否为
O(n)
。因此,您可以通过将
设置为一个
集合而不是一个
列表来节省一些时间。我看不出您在哪里实际显示了您的问题所在。也许您可以澄清一下?代码的意图不清楚。您能否提供strings.txt和infielist.tsv的示例,并显示您期望outfile.tsv的外观比如?我看不出你在哪里实际显示了你的问题所在。也许你可以澄清一下?代码的意图不清楚。你能提供一个strings.txt和infielist.tsv的示例,并展示你期望outfile.tsv的样子吗?我看不到你在哪里实际显示了你的问题所在。也许你可以澄清一下吗?这个示例的意图是什么代码不清楚。能否提供strings.txt和infielist.tsv的示例,并显示您期望outfile.tsv的外观?我看不出您实际在哪里显示问题所在。也许您可以澄清一下?代码的意图不清楚。能否提供strings.txt和infielist.tsv的示例,并显示您期望outil的内容e、 tsv看起来像什么?正确,我认为这是做这件事所需要的(?)但它似乎只是输出tsvin中每一行的字符串/项目数。这很好,解释了双for循环和使用set而不是list。正确,我认为这是做这件事所需要的(?)但它似乎只是输出tsvin中每一行的字符串/项的数量。这非常好,解释了双for循环和set而不是list的用法。正确,我认为这就是需要做的(?)但它似乎只是输出tsvin中每一行的字符串/项的数量。这非常好,解释了双for循环和set而不是list的用法。正确,我认为这就是需要做的(?)但它似乎只输出tsvin中每一行的字符串/项目数。这很好,解释了双for循环和set而不是list的用法。