Python拼接方法将列表中的元素与循环组合在一起



我想用循环来解决这个问题。这段代码是暴力的,我无法将其转化为循环,所以它就像一行代码。

我拿了这个清单:

['2', 'S', '3', 'S', '4', 'S', '5', 'S', '6', 'S', '7', 'S', '8', 'S', '9', 'S', '10', 'S', 'A', 'S', 'K', 'S', 'Q', 'S', 'J', 'S']

将"S"与所有元素结合起来,现在使用此代码:

combine[0 : 2] = [''.join(spades[0 : 2])] 
combine[2 : 4] = [''.join(spades[2 : 4])]
combine[4 : 6] = [''.join(spades[4 : 6])]
combine[6 : 8] = [''.join(spades[6 : 8])]
combine[8 : 10] = [''.join(spades[8 : 10])]
combine[10 : 12] = [''.join(spades[10 : 12])]
combine[12 : 14] = [''.join(spades[12 : 14])]
combine[14 : 16] = [''.join(spades[14 : 16])]
combine[16 : 18] = [''.join(spades[16 : 18])]
combine[18 : 20] = [''.join(spades[18 : 20])]
combine[20 : 22] = [''.join(spades[20 : 22])]
combine[22 : 24] = [''.join(spades[22 : 24])]
combine[24 : 26] = [''.join(spades[24 : 26])]

输出:''

['2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '10S', 'AS', 'KS', 'QS', 'JS']

''

如何使其成为for循环?

您可以尝试使用zip:

>>> spades = ['2', 'S', '3', 'S', '4', 'S', '5', 'S', '6', 'S', '7', 'S', '8', 'S', '9', 'S', '10', 'S', 'A', 'S', 'K', 'S', 'Q', 'S', 'J', 'S']
>>> [a+b for a,b in zip(spades[::2], spades[1::2])]
['2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '10S', 'AS', 'KS', 'QS', 'JS']

或者(正如您要求的for循环(:

>>> res = []
>>> for a,b in zip(spades[::2], spades[1::2]):
...    res.append(a+b)
... 
>>> res
['2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '10S', 'AS', 'KS', 'QS', 'JS']

试试这个:

>>> spades = ['2', 'S', '3', 'S', '4', 'S', '5', 'S', '6', 'S', '7', 'S', '8', 'S', '9', 'S', '10', 'S', 'A', 'S', 'K', 'S', 'Q', 'S', 'J', 'S']
>>> combine = [spades[i] + spades[i+1] for i in range(0,len(spades),2)]
>>> combine
['2S', '3S', '4S', '5S', '6S', '7S', '8S', '9S', '10S', 'AS', 'KS', 'QS', 'JS']

最新更新