列表理解通过笛卡尔积保持一个值固定

时间:2016-01-11 03:13:30

标签: python

Python在每个元素中迭代多个值的数据结构的语法很漂亮。打字for x, y in XcrossY感觉很对。我想知道是否有一种聪明的方法来迭代其中一组,同时保持其他值固定。具体地

     while q not in F:

            choices = list()

            for i in sigma:

                    if (q, i) in delta:

                            choices.append(i)

            choices = tuple(choices)

            # more pythonic way?
            #choices = tuple([i for (q, i) in delta])

注释代码的问题在于它不会使q固定。它只是迭代它。手动用常量值替换q会抛出SyntaxError: can't assign to literal。我想要替换前面的5行。有一个聪明的方法吗?

1 个答案:

答案 0 :(得分:0)

单独保留该部分并在其他地方使用常量,例如[(3,i) for q,i in delta]。如果需要,可以将未使用的变量命名为_,以便更清楚地表明您不打算引用它。如果您根本不想使用常量值,则[i for (q, i) in delta]的原始代码就可以了(如果需要,再次使用_替换未使用的变量)。