這裏的代碼適用於我。但是我對Python很陌生,想知道並學習是否有更優雅或Python的方式來完成這項工作。在Python3中計算一個列表的相等元組元素
有一個兩元素元組的列表。我想加入相同的列表元素,並將相等元素的數量作爲第三個元組元素(其他兩元組元素前面的第一個元素)存儲。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
org = [ (12, 4),
( 8, 4),
(12, 8),
(12, 8) ]
# should result in
# [ (1, 12, 4),
# (1, 8, 4),
# (2, 12, 8) ]
def count_element(count_in, e):
"""
How often does 'e' appear in 'count_in'.
"""
count = 0
for x in count_in:
if x == e:
count += 1
return count
def has_element(look_in, e):
"""
'look_in' is a three-element tuple
'e' is a two-element tuple
"""
for x, y, z in look_in:
if y == e[0] and z == e[1]:
return True
return False
def main():
result = []
for i in org:
if has_element(result, i):
continue
c = count_element(org, i)
resi = (c, i[0], i[1])
result += [resi]
print(org)
print(result)
if __name__ == '__main__':
main()
你能解釋codereview上的代碼和stackoverflow上的代碼之間的差異嗎?我的代碼只是一個簡單的例子來描述我的算法問題。這不是生產性的代碼,需要審查。 – buhtz
爲了達到你想要的效果,'(12,4)'和'(4,12)'是否一樣? – dawg
不,它是不同的。 – buhtz