我知道标题令人困惑,我不知道如何解释,所以这里有一个更好的解释:我有一个文件,其中每一行的写法如下:一、二、三其中 a、b 和 c 是数字。在这里,数字 a 无关紧要。这里,b 应该是某种坐标,c 是一个组号。对于每个 c,我需要找到该组所做的每种动作的计数。例如,假设我的文件是这样的:23,20,78925,7,78929,7,78932,20,7890,2,8703,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=0for 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=0f1.close()f2.close()但你肯定能猜到,这里是部分显示的结果:from 20 to 7 , result= 5from 7 to 7 , result= 9from 7 to 20 , result= 6from 20 to 20 , result= 28242from 20 to 20 , result= 28242from 20 to 20 , result= 28242from 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现在它工作得很好。
1 回答
翻阅古今
TA贡献1780条经验 获得超5个赞
您可以将所有值附加到特定组(例如 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
如果你仍然被卡住,我可以帮你:)
添加回答
举报
0/150
提交
取消