【问题标题】:Problems with tuples inside tuples元组内部的元组问题
【发布时间】:2019-10-23 21:47:15
【问题描述】:

对于元组的元组,我想检查所有内部元组的长度是否相同。

我尝试过比较索引,但它不起作用。

p = ((1,1,1),(1,0,1,1),(1,1,1))

def lab(x):
    if type(x) != tuple:
        return False
    else:
        z = len(x[0])
        for y in x:
            if len(y) < 3 and len(y[1:]) != z:
                return False
            else:
                    while x[0][0] != 1:
                        return False
                    while x[len(x)-1][-1] != 1:
                        return False
        else:
            return True

print(lab(p))

基本上,您可以看到第二个元组有 4 个元素,而不是 3 个,我只是希望函数返回 false 而不是 True,因为第二个元组的大小与第一个元组不同,它应该返回 false,因为那发生了。

我试图建立一个迷宫和它的平方,就像所有的正方形一样,所有的部分都有相同的大小,所以我需要所有的元组有相同的长度,第一个元组的第一个数字必须是 1,最后一个数字最后一个元组的 1 也是为了构建这个迷宫。

Ps:我只需要长度部分,其余的都处理好了,但如果你有任何关于如何改进这一点的想法,我会全力以赴。

【问题讨论】:

  • 对不起,从你的问题我无法理解你想要达到的目标。
  • 当你的意思是if时,你似乎在使用while
  • 乍一看,至少return "False"没有多大意义,应该换成return False
  • 为什么else: 块不使用y
  • 您可以assert len(set([len(tup) for tup in x])) == 1,然后完成剩下的工作。您是否在为其余的工作寻求帮助?还是只是长度检查?

标签: python python-3.x function tuples maze


【解决方案1】:

你可以用单线检查这个:

def lab(tups):
  return len(set([len(tup) for tup in tups])) == 1

print(lab(((1,1,1),(1,0,1,1),(1,1,1)))) # False
print(lab(((1,1,1),(1,1,1),(1,1,1)))) # True

...当然,您可能想为空元组添加错误检查等

【讨论】:

  • 他还想检查其他一些条件,而不仅仅是相同的长度。
【解决方案2】:

如果您想检查所有内部元组/列表的长度是否相同:

>>> f = lambda l: all([len(t) == len(l[0]) for t in l])
>>> f([(1,1,1),(1,1,1),(1,1,1)])
True
>>> f([(1,1,1),(1,0,1,1),(1,1,1)])
False
>>> f([])
True

【讨论】:

  • 它仍然没有检查内部元组是否具有相同的长度
  • 这正是len(t) == len(l[0]) 的用途
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 2017-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多