相关疑难解决方法(0)

Pythonic方式以交替的方式组合两个列表?

我有两个列表,第一个列表保证只包含一个列表而不是第二个列表.我想知道创建一个新列表的最Pythonic方法,其中偶数索引值来自第一个列表,其奇数索引值来自第二个列表.

# example inputs
list1 = ['f', 'o', 'o']
list2 = ['hello', 'world']

# desired output
['f', 'hello', 'o', 'world', 'o']
Run Code Online (Sandbox Code Playgroud)

这有效,但并不漂亮:

list3 = []
while True:
    try:
        list3.append(list1.pop(0))
        list3.append(list2.pop(0))
    except IndexError:
        break
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标呢?什么是最Pythonic方法?

python

75
推荐指数
8
解决办法
5万
查看次数

在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
查看次数

Python - 从列表中间开始迭代,然后检查任一方

真的不确定这适合的地方.说,我有一个清单:

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

如何以这样的方式迭代它,它将首先检查4,然后是5,然后是3,然后是6,然后是2(对于更大的列表,依此类推)?我只能解决中间问题

>>>middle = [len(a)/2 if len(a) % 2 = 0 else ((len(a)+1)/2)]
Run Code Online (Sandbox Code Playgroud)

我真的不确定如何应用这个,我也不确定我的中间方式是最好的方法.我想过抓住两个索引,每次迭代后,添加1并从每个索引中减1,但不知道如何使for循环遵守这些规则.

关于我为什么需要这个; 这是用于分析纸牌游戏中的有效游戏,并且将从给定手牌的中间牌检查到每一端,直到可以播放有效的牌.

python iteration

4
推荐指数
3
解决办法
1910
查看次数

标签 统计

python ×3

iteration ×1

iterator ×1