Python 将列表拆分为偶数位置
我在Python 3中有以下列表:Python 将列表拆分为偶数位置,python,python-3.x,Python,Python 3.x,我在Python 3中有以下列表: ['X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.', 'X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O', 'X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '
['X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.', 'X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O', 'X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O', 'X', 'X', 'X', 'O', '.', '.', 'O', '.', '.', 'O', '.', '.', 'T', '.', '.', '.', 'O', 'X', 'X', 'X', 'X', 'O', '.', '.', '.', '.', 'O', '.', '.', '.', '.', 'O']
16个位置之后,我想这样分割它:
CASE_1 = ['X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.']
CASE_2 = ['X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O']
CASE_3 = ['X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.']
CASE_4 = ['O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O'] etc
我如何做到这一点?
谢谢
我将通过打印出来向您展示它与示例相匹配
>>> import pprint
>>> pprint.pprint(cases, width=400)
[('X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.'),
('X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O'),
('X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'),
('O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O'),
('X', 'X', 'X', 'O', '.', '.', 'O', '.', '.', 'O', '.', '.', 'T', '.', '.', '.'),
('O', 'X', 'X', 'X', 'X', 'O', '.', '.', '.', '.', 'O', '.', '.', '.', '.', 'O')]
至于这是如何运作的:
我将通过打印出来向您展示它与示例相匹配
>>> import pprint
>>> pprint.pprint(cases, width=400)
[('X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.'),
('X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O'),
('X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'),
('O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O'),
('X', 'X', 'X', 'O', '.', '.', 'O', '.', '.', 'O', '.', '.', 'T', '.', '.', '.'),
('O', 'X', 'X', 'X', 'X', 'O', '.', '.', '.', '.', 'O', '.', '.', '.', '.', 'O')]
至于如何做到这一点:“应该有一种——最好只有一种——显而易见的方法。”
“应该有一种——最好只有一种——显而易见的方法来做到这一点。”
+回答得好。但是我不认为需要
list()
:p.@Haidro它在Python2上是多余的,但是在Python3AH上你需要它,那我就错了。抱歉:)@Haidro这对Python 2用户来说是值得注意的,我忘了提一下it@jsbueno如果它是Python开发人员自己支持的,那怎么会是黑客呢:(寻找grouper配方)你所说的不能依赖zip
是错误的+回答得好。但是我不认为需要list()
:p.@Haidro它在Python2上是多余的,但是在Python3AH上你需要它,那我就错了。抱歉:)@Haidro这对Python 2用户来说是值得注意的,我忘了提一下it@jsbueno如果它是Python开发人员自己支持的,那怎么会是黑客呢:(寻找grouper配方)你所说的不能依赖zip
是错误的@jamylak同意,这是链接的副本question@Lewis:我强烈建议您使用一个更简单且易于维护的实现,如我提供的实现。JAMLAK的渲染可能会起作用,但我认为它比真正的代码更有趣。它在Python实现中不可靠,并且很难理解和维护。@jsbueno我的代码非常好:)检查我的回答下面的注释你的代码比我的慢两倍多——也就是说,如果数据集不够大,那么你的方式就不会到处出现缓存未命中。将数据分散到任何地方只是为了重新连接,而您只需要相同的数据块显然不是最好的方法。@jamylak同意,这是链接的重复question@Lewis:我强烈建议您使用一个更简单且易于维护的实现,如我提供的实现。JAMLAK的渲染可能会起作用,但我认为它比真正的代码更有趣。它在Python实现中不可靠,并且很难理解和维护。@jsbueno我的代码非常好:)检查我的回答下面的注释你的代码比我的慢两倍多——也就是说,如果数据集不够大,那么你的方式就不会到处出现缓存未命中。当您只需要相同的数据块时,将数据分散到任何地方以重新连接它显然不是最好的方法。
>>> a = ['X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.', 'X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O', 'X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', 'O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O', 'X', 'X', 'X', 'O', '.', '.', 'O', '.', '.', 'O', '.', '.', 'T', '.', '.', '.', 'O', 'X', 'X', 'X', 'X', 'O', '.', '.', '.', '.', 'O', '.', '.', '.', '.', 'O']
>>> b = [a[i: i + 16] for i in range(0,len(a), 16) ]
>>> from pprint import pprint
>>> pprint(b, width=400)
[['X', 'X', 'X', 'T', '.', '.', '.', '.', 'O', 'O', '.', '.', '.', '.', '.', '.'],
['X', 'O', 'X', 'T', 'X', 'X', 'O', 'O', 'O', 'X', 'O', 'X', 'X', 'X', 'O', 'O'],
['X', 'O', 'X', '.', 'O', 'X', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'],
['O', 'O', 'X', 'X', 'O', 'X', 'X', 'X', 'O', 'X', '.', 'T', 'O', '.', '.', 'O'],
['X', 'X', 'X', 'O', '.', '.', 'O', '.', '.', 'O', '.', '.', 'T', '.', '.', '.'],
['O', 'X', 'X', 'X', 'X', 'O', '.', '.', '.', '.', 'O', '.', '.', '.', '.', 'O']]