首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在元组中复制元组

在元组中复制元组
EN

Stack Overflow用户
提问于 2019-10-20 20:13:21
回答 2查看 52关注 0票数 1

我正在为大学做一个项目,我被困住了。有一个由几个位置组成的元组,这些位置被表示为元组。所以,让我们把这个元组称为“立场”。positions = ((2, 1), (2, 2), (1, 1), (2, 1))

这将是元组中可能存在的位置的一个例子。

我应该检查是否有任何位置(小元组)在元组中重复显示所有位置(大元组),从而导致错误输出。

在本例中,有一个正在重复的立场。

我试过用循环。我真的不知道该怎么做。

代码语言:javascript
复制
def positions_func(positions): 
    for i in range(len(positions)):
        for j in range(len(positions)):
            if positions[i] == positions[:j]:
                return False

出现的错误是元组超出了索引,这证明了我做错了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-20 20:20:13

有两种简单的方法,取决于你下一步需要做什么,一种可能比另一种更好。

第一,将大元组转换成一组,并比较它们的长度:

代码语言:javascript
复制
if len(positions) != len(set(positions)):
  print("There were duplicates.")

或者使用collections.Counter,例如,如果您需要知道哪一个是重复的:

代码语言:javascript
复制
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)")
票数 3
EN

Stack Overflow用户

发布于 2019-10-20 20:19:38

我认为这是因为您添加了j索引的colun。

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58476913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档