我有一个字符串列表,我希望将它们配对,使得最后一个和第二个最后一个是一对,倒数第二个和第三个最后一对,依此类推,中间有三个点。
假设我有以下列表
['a', 'b', 'c', 'd', 'e']
我想把它转换成这样的东西
['e...d', 'd...c', 'c...b', 'b...a', 'a...none']
到目前为止,我已经完成了以下工作,
>>> import string
>>>
>>> letters = string.ascii_lowercase[:5]
>>> letters = iter(reversed(letters))
>>> pair_iter = (c + '...' + next(letters, 'none') for c in letters)
>>> pair_iter = list(pair_iter)
>>> pair_iter
['e...d', 'c...b', 'a...none']
我不确定在这种情况下还能做什么,我知道next
转到下一个字符串,但我应该如何复制上一个字符串然后转到下一个?
答案 0 :(得分:2)
理解如下:
list(reversed(['{}..{}'.format(a, b) for a, b in zip(s, ['none'] + s[:-1])]))
s = ['a', 'b', 'c', 'd', 'e']
print(list(reversed(['{}..{}'.format(a, b) for a, b in zip(s, ['none'] + s[:-1])])))
['e..d', 'd..c', 'c..b', 'b..a', 'a..none']
答案 1 :(得分:2)
您还可以使用增量索引:
s = ['a', 'b', 'c', 'd', 'e']
new_s = s[::-1]
final_s = ['{}..{}'.format(new_s[i], new_s[i+1]) for i in range(len(new_s)-1)]+['{}..{}'.format(new_s[-1], 'none')]
输出:
['e..d', 'd..c', 'c..b', 'b..a', 'a..none']