相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.

我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

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

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

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

python list

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

在每个第n个元素之后在Python列表中插入元素

假设我有一个像这样的Python列表:

letters = ['a','b','c','d','e','f','g','h','i','j']
Run Code Online (Sandbox Code Playgroud)

我想在每个第n个元素后插入一个'x',假设该列表中有三个字符.结果应该是:

letters = ['a','b','c','x','d','e','f','x','g','h','i','x','j']
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过循环和插入来做到这一点.我实际上寻找的是一种Python方式,也许是一个单行程?

python indexing list insert slice

23
推荐指数
4
解决办法
2万
查看次数

如何合并两个python迭代器?

我有两个迭代器,一个list和一个itertools.count对象(即无限值生成器).我想将这两个合并到一个生成的迭代器中,它将在两者之间交替屈服值:

>>> import itertools
>>> c = itertools.count(1)
>>> items = ['foo', 'bar']
>>> merged = imerge(items, c)  # the mythical "imerge"
>>> merged.next()
'foo'
>>> merged.next()
1
>>> merged.next()
'bar'
>>> merged.next()
2
>>> merged.next()
Traceback (most recent call last):
    ...
StopIteration
Run Code Online (Sandbox Code Playgroud)

这样做最简单,最简洁的方法是什么?

python merge iterator

21
推荐指数
6
解决办法
2万
查看次数

在列表中已有的每个项目之间添加项目

可能重复:
python:使用元素散布列表的最优雅方式

假设我有以下列表:

['a','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)

如何-在此列表中的每个项目之间添加新项目(在本例中为a ),以便我的列表如下所示?

['a','-','b','-','c','-','d','-','e']
Run Code Online (Sandbox Code Playgroud)

谢谢.

python list insert

20
推荐指数
4
解决办法
2万
查看次数

Python:交织两个列表

执行以下操作的pythonic方法是什么:

我有两个列表ab相同的长度n,我想形成列表

c = [a[0], b[0], a[1], b[1], ..., a[n-1], b[n-1]]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension

16
推荐指数
3
解决办法
1825
查看次数

如何在python中优雅地交错两个不均匀长度的列表?

我想在python中合并两个列表,列表具有不同的长度,因此较短列表的元素在最终列表中的间隔尽可能相等.即我想采取[1, 2, 3, 4]['a','b']合并它们以获得类似的列表[1, 'a', 2, 3, 'b', 4].它需要能够与那些不准确的倍数太名单功能,所以它可以采取[1, 2, 3, 4, 5]['a', 'b', 'c']生产[1, 'a', 2, 'b', 3, 'c', 4, 5]或相似.它需要保留两个列表的顺序.

我可以通过一个冗长的蛮力方法看到如何做到这一点但是因为Python似乎有很多优秀的工具可以做各种我不知道的聪明的事情(还)我想知道是否还有其他的东西优雅我可以使用?

注意:我使用的是Python 3.3.

python list python-3.x

12
推荐指数
4
解决办法
2911
查看次数

在Python中的迭代器之间交替

在Python中替换从不同迭代器获取值的最有效方法是什么,例如,alternate(xrange(1, 7, 2), xrange(2, 8, 2))它将产生1,2,3,4,5,6.我知道实现它的一种方法是:

def alternate(*iters):
    while True:
        for i in iters:
            try:
                yield i.next()
            except StopIteration:
                pass
Run Code Online (Sandbox Code Playgroud)

但是有更高效或更清洁的方式吗?(或者,更好的是,itertools我错过了一个功能?)

python iterator

9
推荐指数
3
解决办法
5024
查看次数

Pythonic方式混合两个列表

我有两个长度为n和n + 1的列表:

[a_1, a_2, ..., a_n]
[b_1, b_2, ..., b_(n+1)]
Run Code Online (Sandbox Code Playgroud)

我想要一个函数给出一个列表,其中包含来自两者的备用元素,即

[b_1, a_1, ..., b_n, a_n, b_(n+1)]
Run Code Online (Sandbox Code Playgroud)

以下工作,但看起来不聪明:

def list_mixing(list_long,list_short):
    list_res = []
    for i in range(len(list_short)):
        list_res.extend([list_long[i], list_short[i]])
    list_res.append(list_long[-1])
    return list_res
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议更多的pythonic方式吗?谢谢!

python

9
推荐指数
2
解决办法
1万
查看次数

如何交错两个不同长度的列表?

我是Python的新手,我仍然很难将语言本身用于我的程序.这是我到目前为止所拥有的:

# Purpose: 'twolists' = takes 2 lists, & returns a new list containing
# alternating elements of lists. 
# Return = final_list
# Parameter = list1, list2

def twolists(list1, list2): # don't forget to return final_list
    alt_list = []
    a1 = len(list1)
    a2 = len(list2)

    for i in range(# ? ):
        # append one thing from list1 to alt_list - How?
        # append one thing from list2 to alt_list - How?
Run Code Online (Sandbox Code Playgroud)

现在该程序应该产生如下输出:

outcome = twolists([ ], ['w', 'x', 'y', …
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
2
解决办法
1695
查看次数