Python:计算数字变化的次数

时间:2019-03-19 10:15:22

标签: python

我知道标题令人困惑,不知道该怎么解释,所以这里有一个更好的解释:

我有一个文件,每一行的编写方式如下:

  

a,b,c

其中a,b和c是数字。在这里,数字a是无关紧要的。在这里,b应该是某种坐标,而c是组号。

对于每个c,我需要找到小组进行的每种动作的计数。

例如,假设我的文件是这样的:

23,20,789
25,7,789
29,7,789
32,20,789
0,2,870
3,40,870

因此,我需要计算789组从1移到1,从1移到2,...,从7移到7,从20移到7,从20移到8,...的次数,依此类推直到117至117。 并为每个组执行此操作。

当然,可以有很多零。 因此,例如在这里我应该找到:

对于组789:对于其他所有运动组合,1从20移到7,1从7移到7,1从7移到20,0移动。

对于870组:1从2移到40,所有其他组合的移动为0。

我希望这很清楚。

我知道我应该放下我开始做的事情,但这就是我的问题。我真的不知道从哪里开始。我的意思是我知道如何计算一个数字或一个字符串出现在文本中的次数,但是要计算变化(尤其是按组计算),我不知道从哪里开始。

希望您至少可以帮助我。

谢谢

编辑:感谢@Tojrah,这就是我现在拥有的

f1=open("My_file_where_the_coordinates_for_one_group_are_all_in_one_line.txt","r")
f2=open("File_of_counts.txt","a")
line=f1.readline()
s=line.split()
count=0

for i in range (0,len(s)-1):
    for j in range (1,len(s)-1):
        if s[j]==s[i] and s[j+1]==s[i+1]:
            count+=1
    f2.write("from {} to {} , result= {}\n".format(s[i], s[i+1], count))
    count=0
f1.close()
f2.close()

但是您可以肯定地猜到,以下是部分显示的结果:

from 20 to 7 , result= 5
from 7 to 7 , result= 9
from 7 to 20 , result= 6
from 20 to 20 , result= 28242
from 20 to 20 , result= 28242
from 20 to 20 , result= 28242
from 20 to 20 , result= 28242

您可以看到计数很好,但是几次计数相同的动作。如何阻止它计数已经计数的运动?

编辑2: 这是我对@Tojrah的代码所做的更改:

for i in range (1,118):
for j in range (1,118):
    count=0
    for k in range (0, len(s)-1):
        if (str(i)==s[k] and str(j)==s[k+1]):
            count+=1
    f.write("from {} to {} , result= {}\n".format(i, j, count))
    count=0

现在可以正常使用了。
再次感谢@Tojrah对我的帮助。

1 个答案:

答案 0 :(得分:1)

您可以将所有值附加在特定组(例如789)列表的第二位(数字b)。然后,使用嵌套循环遍历列表,即可获得所需的所有移动。希望这就是你想要的。 代码:

for i in range(1,118):
    for j in range(1,118):
         count=0
         for p in range(len(list)-1):
             if(list[p]==i and list[p+1]==j):
                 count+=1
         if(count!=0):
             #print/write Statement here

如果您仍然遇到问题,我可以为您提供帮助:)