鱼C论坛

 找回密码
 立即注册
查看: 2578|回复: 1

索引

[复制链接]
发表于 2015-3-23 18:50:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 戴宇轩 于 2015-3-23 18:53 编辑
  1. a = [[1, 2, 7, 6], [2, 3, 8, 7], [3, 4, 9, 8], [4, 5, 10, 9], [6, 7, 12, 11],
  2. [7, 8, 13, 12], [8, 9, 14, 13], [9, 10, 15, 14], [11, 12, 17, 16],
  3. [12, 13, 18, 17], [13, 14, 19, 18], [14, 15, 20, 19], [16, 17, 22, 21],
  4. [17, 18, 23, 22], [18, 19, 24, 23], [19, 20, 25, 24]]
  5. s = {}
  6. for var in a:
  7.     for num in var:
  8.         ch = str(num)
  9.         if ch in s:
  10.             s[ch] = s[ch]+1
  11.         else:
  12.             s[ch] = 1
  13. def func(n): # n为节点的个数
  14.     for var,num in s.items() :
  15.         print var,num
  16. func(25)
复制代码

通过这个程序我得到了列表a中各个数在整个列表中出现的次数,我现在需要得到每个数在列表a中的位置。
结果如下:
  1. 24 2
  2. 25 1
  3. 20 2
  4. 21 1
  5. 22 2
  6. 23 2
  7. 1 1
  8. 3 2
  9. 2 2
  10. 5 1
  11. 4 2
  12. 7 4
  13. 6 2
  14. 9 4
  15. 8 4
  16. 11 2
  17. 10 2
  18. 13 4
  19. 12 4
  20. 15 2
  21. 14 4
  22. 17 4
  23. 16 2
  24. 19 4
  25. 18 4
复制代码

当一个数出现的次数为1时,输出这个数在列表中的位置,并且这些位置存储在一个新的列表中。
当一个数出现的次数为2时,输出这个数在列表中的位置,并且这些位置存储在一个新的列表中。
当一个数出现的次数为3时,输出这个数在列表中的位置,并且这些位置存储在一个新的列表中。
当一个数出现的次数为4时,输出这个数在列表中的位置,并且这些位置存储在一个新的列表中。
求高手解答。谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-3-23 19:38:31 | 显示全部楼层
  1. def fun(a):
  2.     dic = {} # 用字典存放出现的数字和它出现的位置{数字:{位置的集合set}}
  3.     for i in range(len(a)):
  4.         for j in range(len(a[i])):
  5.             dic.setdefault(a[i][j], {(i, j)})  # 若出现新的数字就把它加入字典,并设置位置集合为仅包含当前位置的集合
  6.             dic[a[i][j]].add((i, j))  # 把新的位置加入相应的集合中
  7.     for each_item in dic.items():
  8.         print(str(each_item[0]) + ":" + str(len(each_item[1])) + " " + str(list(each_item[1])))  
  9.   # 输出为    数字:出现的次数    位置集合

  10. a = [[1, 2, 7, 6], [2, 3, 8, 7], [3, 4, 9, 8], [4, 5, 10, 9], [6, 7, 12, 11],
  11. [7, 8, 13, 12], [8, 9, 14, 13], [9, 10, 15, 14], [11, 12, 17, 16],
  12. [12, 13, 18, 17], [13, 14, 19, 18], [14, 15, 20, 19], [16, 17, 22, 21],
  13. [17, 18, 23, 22], [18, 19, 24, 23], [19, 20, 25, 24]]
  14. fun(a)
复制代码

输出
  1. 1:1 [(0, 0)]
  2. 2:2 [(0, 1), (1, 0)]
  3. 3:2 [(2, 0), (1, 1)]
  4. 4:2 [(3, 0), (2, 1)]
  5. 5:1 [(3, 1)]
  6. 6:2 [(0, 3), (4, 0)]
  7. 7:4 [(1, 3), (4, 1), (0, 2), (5, 0)]
  8. 8:4 [(1, 2), (5, 1), (2, 3), (6, 0)]
  9. 9:4 [(6, 1), (7, 0), (3, 3), (2, 2)]
  10. 10:2 [(3, 2), (7, 1)]
  11. 11:2 [(8, 0), (4, 3)]
  12. 12:4 [(8, 1), (4, 2), (9, 0), (5, 3)]
  13. 13:4 [(6, 3), (10, 0), (5, 2), (9, 1)]
  14. 14:4 [(11, 0), (7, 3), (6, 2), (10, 1)]
  15. 15:2 [(11, 1), (7, 2)]
  16. 16:2 [(8, 3), (12, 0)]
  17. 17:4 [(9, 3), (12, 1), (8, 2), (13, 0)]
  18. 18:4 [(9, 2), (13, 1), (10, 3), (14, 0)]
  19. 19:4 [(14, 1), (15, 0), (11, 3), (10, 2)]
  20. 20:2 [(11, 2), (15, 1)]
  21. 21:1 [(12, 3)]
  22. 22:2 [(12, 2), (13, 3)]
  23. 23:2 [(14, 3), (13, 2)]
  24. 24:2 [(15, 3), (14, 2)]
  25. 25:1 [(15, 2)]
复制代码



评分

参与人数 1荣誉 +10 鱼币 +10 收起 理由
~风介~ + 10 + 10

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-15 09:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表