如果输入是元组,我怎样才能使我的代码工作?

Posted

技术标签:

【中文标题】如果输入是元组,我怎样才能使我的代码工作?【英文标题】:How can I make my code work if the input is a tuple? 【发布时间】:2022-01-15 03:03:58 【问题描述】:

所以我在一些 Stack Overflow 用户的帮助下编写了这段代码......

它试图分析我的元组l 并查看该元组中的x 是否是它们的两对元素中的第一个字符

这是我的代码,

def two_pairs(l):
    d = 
    for i, x in enumerate(l):
        d.setdefault(x[0],[]).append(i)

    for v in d.values():
        if len(v) > 2:
            return False
        elif len(v) == 2:
            if v[1] - v[0] == 1:
                continue
            else:
                return False
        else:
            continue
    return True

但是,这仅在输入是列表时才有效......就像

['AS', 'AD', 'CC', 'CH', 'CS'] returns False because there are 3 C and 2 , but there are supposed to be 2 of the same elements and one of a completely different element.

['AS', 'AD', 'SC', 'SH', 'CS'] returns True because there are 2 A, 2 S and one C.
['CS', 'CD', 'AC', 'AH', 'FS'] returns True because there are 2 C, 2 A and one F

['AS', 'CD', 'AC', 'CH', 'DS'] returns False because although there are two A, two C and one D, the A and C are not in order

但是,我希望我的代码当输入 h 是像 ('AS', 'CD', 'AC', 'CH', 'DS']) 这样的元组时能够工作,并且也返回 True 或 False..

我应该做些什么改变??

【问题讨论】:

请注意,您提供的元组 (('AS', 'CD', 'AC', 'CH', 'DS'])) 中有一个额外的 ],因此它不是有效的元组。删除 ] 可能会解决您的问题。 【参考方案1】:

您只需添加以下代码,即可在函数顶部将 tuple 转换为 list

l = list(l)

(如果l已经是一个列表,那么这一行将无效)

【讨论】:

以上是关于如果输入是元组,我怎样才能使我的代码工作?的主要内容,如果未能解决你的问题,请参考以下文章

使用字典作为参数映射 Pandas 系列,其中值是元组

我怎样才能使我的菜单栏居中?

我有一个工作布尔函数,但我的代码非常笨拙。我怎样才能使它更顺畅? [关闭]

我怎样才能让这两个 javascript 代码一起工作?

我怎样才能使我的应用程序 MS EDGE 兼容

怎样才能使我的扭曲'反应堆'停止?