我正在为大学做一个项目,我被困住了。有一个由几个位置组成的元组,这些位置被表示为元组。所以,让我们把这个元组称为“立场”。positions = ((2, 1), (2, 2), (1, 1), (2, 1))
这将是元组中可能存在的位置的一个例子。
我应该检查是否有任何位置(小元组)在元组中重复显示所有位置(大元组),从而导致错误输出。
在本例中,有一个正在重复的立场。
我试过用循环。我真的不知道该怎么做。
def positions_func(positions):
for i in range(len(positions)):
for j in range(len(positions)):
if positions[i] == positions[:j]:
return False出现的错误是元组超出了索引,这证明了我做错了。
发布于 2019-10-20 20:20:13
有两种简单的方法,取决于你下一步需要做什么,一种可能比另一种更好。
第一,将大元组转换成一组,并比较它们的长度:
if len(positions) != len(set(positions)):
print("There were duplicates.")或者使用collections.Counter,例如,如果您需要知道哪一个是重复的:
from collections import Counter
counts = Counter(positions)
for item, count in counts.most_common():
print(item, "occurred", count, "times.")
if count > 1:
print("(so there was a duplicate)")发布于 2019-10-20 20:19:38
我认为这是因为您添加了j索引的colun。
def positions_func(positions):
for i in range(len(positions)):
for j in range(len(positions)):
if positions[i] == positions[j] and i != j:
return False试试上面的代码。它将检查两个元组是否相同,并返回false。
https://stackoverflow.com/questions/58476913
复制相似问题