使用 for 循环比较来自两个列表/元组的元素(在递归中)

Posted

技术标签:

【中文标题】使用 for 循环比较来自两个列表/元组的元素(在递归中)【英文标题】:Comparing elements from two lists/tuples with a for loop (in a recursion) 【发布时间】:2022-01-19 19:36:37 【问题描述】:

这实际上是一个更长的递归的一部分,但我只是想弄清楚我是否写错了这一行:

for i in range(len(colors):
    if colors[i][j] == new_pfx[-1][j] for j in range(1, len(colors[i])):
        continue
    else:
        (there is an append here)

基本上:

“new_pfx”是我递归附加元组的列表(元组长度在整个递归过程中保持不变,但代码必须适用于任何长度) “colors”是另一个元组列表(同样,长度相同)

我想要做的是: 从追加(使用“继续”)中排除“颜色”中的每个元组,其中其中的元素(不包括第一个和最后一个)等于来自“new_pfx”的最后一个元组中具有相同索引的元素。

我的语法错了吗?

我很难发布我的结果,因为这是一个更大的计划的一部分,我在这篇文章中对其进行了简化。希望我说清楚了,非常感谢您的帮助!

【问题讨论】:

你应该使用any()函数:if any(colors[i][j] ...) 【参考方案1】:

您不能将生成器单独用作布尔值。我想你想要的是any:

if any(colors[i][j] == new_pfx[-1][j] for j in range(1, len(colors[i])-1)):

(请注意,如果要排除最后一个元素以及第一个元素,则需要range(1, len(colors[i])-1)

您还可以通过直接迭代列表而不是使用ij 索引来更简单地完成整个循环:

for color in colors:
    if any(c == n for c, n in zip(color[1:-1], new_pfx[-1][1:-1])):
        continue
    # there is an append here, using color instead of colors[i]

【讨论】:

以上是关于使用 for 循环比较来自两个列表/元组的元素(在递归中)的主要内容,如果未能解决你的问题,请参考以下文章

Python:元组列表:比较所有元组并检索元组的元素不等于任何其他元组的元组

Python学习—— 列表和元组的类中方法

python基础知识第四篇(元组)

在 Python 中使用 for 循环计算元组列表的平均值

python 列表字典元组等增删改查

python 列表字典元组等增删改查