相关疑难解决方法(0)

列表理解中的双重迭代

在Python中,您可以在列表推导中使用多个迭代器,例如

[(x,y) for x in a for y in b]
Run Code Online (Sandbox Code Playgroud)

对于一些合适的序列a和b.我知道Python列表推导的嵌套循环语义.

我的问题是:理解中的一个迭代器可以指向另一个吗?换句话说:我可以这样:

[x for x in a for a in b]
Run Code Online (Sandbox Code Playgroud)

外循环的当前值是内部的迭代器?

例如,如果我有一个嵌套列表:

a=[[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

列表理解表达式将实现此结果:

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

?? (请仅列出理解答案,因为这是我想要找到的).

python list-comprehension

202
推荐指数
9
解决办法
14万
查看次数

在Python中交错多个相同长度的列表

在Python中,是否有一种交错两个相同长度列表的好方法?

说我给[1,2,3][10,20,30].我想把它们变成[1,10,2,20,3,30].

python list

72
推荐指数
5
解决办法
3万
查看次数

嵌套列表推导

我尝试在内部列表中使用外部列表理解的值:

[ x for x in range(y) for y in range(3) ]
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这引发了一个NameError,因为名称y是未知的(尽管外部列表理解指定了它).

这是Python的限制(尝试过2.7.3和3.2.3)还是有充分的理由说明为什么这不起作用?

有计划摆脱限制吗?

是否有解决方法(一些不同的语法,我可能没想到)来实现我想要的?

python syntax list-comprehension list

4
推荐指数
1
解决办法
1324
查看次数

按未排序列表中的出现顺序对列表项进行分组

测试用例:

group_ordered([1,3,2,3,6,3,1]) = [1,1,3,3,3,2,6]
group_ordered([1,2,3,4,5,6,1]) = [1,1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

我已经有了一些代码,但它很丑陋并且在大型列表上也可能很慢,因为对于每个独特的项目我都在查看整个列表.我提出了这个算法,但我想知道是否有更快,更清洁或更pythonic的方式我可以做到这一点:

def make_order_list(list_in):
    order_list = []
    for item in list_in:
        if item not in order_list:
            order_list.append(item)
    return order_list


def group_ordered(list_in):
    if list_in is None:
        return None
    order_list = make_order_list(list_in)
    current = 0
    for item in order_list:
        search = current + 1
        while True:
            try:
                if list_in[search] != item:
                    search += 1
                else:
                    current += 1
                    list_in[current], list_in[search] = list_in[search], list_in[current]
                    search += 1
            except IndexError:
                break
    return list_in
Run Code Online (Sandbox Code Playgroud)

python sorting

4
推荐指数
1
解决办法
175
查看次数

“[b for a in x for b in a if not b==k]”是什么意思?

完全被难住了:

indices = numpy.array([b for a in x for b in a if not b==k])
Run Code Online (Sandbox Code Playgroud)

[b for a in x for b in a if not b==k]x作为整数的二维数组和k作为整数的上下文中,关于我应该如何阅读的任何指针?或者加括号来帮助我理解事物的优先级?

python numpy list-comprehension

3
推荐指数
1
解决办法
7003
查看次数

标签 统计

python ×5

list-comprehension ×3

list ×2

numpy ×1

sorting ×1

syntax ×1