一个列表可能有多个平衡点,比如:[1, 2, 3, -3, 3, 2, 1],加上这种情况。
- def slice(list1):
- balance = []
- for i in range(2, len(list1)-1):
- if sum(list1[:i]) == sum(list1[i+1:]):
- balance.append([i, list1[i]])
- return balance if len(balance) else None
- l1 = [[1, 3, 5, 7, 8, 25, 4, 20, 29], [6, 5, 7, 9, 0, 5, 43, 2, 17, 13, 16], [2, 31, 43, 234, 0, 10, 15, 310, 37, 43, 21],
- [1, 3, 2, 546, 123, 546, 98, 543, 22, 424, 56, 23, 199, 934, 4], [1, 2, 4, 34, 54, 27, 49, 14, 36, 25, 68, 13, 35,
- 78, 60, 25, 17, 5, 9, 23, 2, 1, 8, 1, 33, 26, 1, 9, 11, 5, 5, 253, 47, 65, 56, 10], [1, 2, 3, -3, 3, 2, 1]]
- for i in l1:
- result = slice(i)
- if result is None:
- print("该列表无平衡点!")
- else:
- print("该列表有%d个平衡点,平衡点为:" % len(result))
- for s in result:
- print(" 第%d个元素:%d。" % (s[0], s[1]))
复制代码
结果:
该列表有1个平衡点,平衡点为:
第6个元素:4。
该列表无平衡点!
该列表无平衡点!
该列表无平衡点!
该列表无平衡点!
该列表有3个平衡点,平衡点为:
第2个元素:3。
第3个元素:-3。
第4个元素:3。 |