猿问

Python:统计数字变化的次数

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


我有一个文件,其中每一行的写法如下:


一、二、三


其中 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

现在它工作得很好。


慕桂英3389331
浏览 300回答 1
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如果你仍然被卡住,我可以帮你:)
随时随地看视频慕课网APP

相关分类

Python
我要回答