【发布时间】:2017-09-14 07:33:53
【问题描述】:
全文
我有一个命名元组列表,它本身包含一个元组和一个字符串,如下所示:
a = [
X(( 1, 1), "a"),
X(( 2, 1), "b"),
X(( [3, 4], 1), "c"),
X((range(25, 30), 4), "d")
X(( 13, [6, 14]), "e")
]
我想通过将给定元组的值与第一个元组中的值进行比较来返回命名元组。
例如。
b = (1, 1)
return [x for x in a if a.val == b]
我面临的问题是 b = (3, 1) 它应该返回第三个元组。
我尝试查看zip,但这仅在可迭代对象的长度相同时才有效。
我还查看了itertools.product,但为此我需要让所有元素都可以迭代。
简短的问题
我正在尝试查看是否有一种方法可以迭代内部元组中的元素并使其成为可迭代元组。
如下:
a = ([3, 4], 1)
b = [[x] for x in a]
c = product(*b)
问题在于[3, 4] 变成了[[3, 4]]。然后只产生一个产品。
我试图避免让每个 int 成为 list 非程序化。
【问题讨论】:
-
那么为什么要匹配
([3, 4], 1)元组呢?这里有什么规则?是否应该因为第一个元素包含3而匹配?这对我来说听起来像是一个递归问题。 -
该列表暗示任何给定的值都应该匹配,因此
(3, 1)和(4, 1)应该匹配。这是在表格中输入值的简写符号。 -
@TsviM,
b = (30, 6)应该匹配X((range(25, 30), 4), "d")吗?