我有一个字符串(例如:BCVDBCVCBCBD),我已使用
将其转换为列表seq_split = [string[i:i+1] for i in range (0, len(string),1)]
这导致了一个类似['B','C','V'.........,'D']的列表
现在考虑我以数字的形式(例如2)接受用户输入。我需要从头开始读第二个元素,即序列的第一个字母和距离第一个字母2个位置的字母(在计数中它将是从开始的第3个字母)。第二次生病需要阅读序列中的第二个字母,并且字母2再次放置。即序列的第2和第4个字母。 (我知道它有点令人困惑,因此有详细的解释)
如果用户输入是数字2: 然后在一个新列表中,我将需要附加(使用给定的字符串作为示例) - 'BV','CD','VB'等等在新列表中。
同样,如果输入为4.那么我创建的新列表将具有 - 'BB','CC'等... 我很困惑如何索引它们。
答案 0 :(得分:7)
您可以使用
获得所需的列表[x + y for x, y in zip(string, string[i:])]
其中i
是用户选择的数字。例如:
>>> string = "BCVDBCVCBCBD"
>>> i = 2
>>> [x + y for x, y in zip(string, string[i:])]
['BV', 'CD', 'VB', 'DC', 'BV', 'CC', 'VB', 'CC', 'BB', 'CD']
答案 1 :(得分:4)
In [31]: L
Out[31]: ['B', 'C', 'V', 'D', 'B', 'C', 'V', 'C', 'B', 'C', 'B', 'D']
In [32]: sep = 2
In [33]: [L[i]+L[i+sep] for i in range(len(L)-sep)]
Out[33]: ['BV', 'CD', 'VB', 'DC', 'BV', 'CC', 'VB', 'CC', 'BB', 'CD']
In [34]: sep = 4
In [35]: [L[i]+L[i+sep] for i in range(len(L)-sep)]
Out[35]: ['BB', 'CC', 'VV', 'DC', 'BB', 'CC', 'VB', 'CD']
答案 2 :(得分:1)
#!/usr/bin/python
l = 'BCVDBCVCBCBD'
while True:
try:
step = int (raw_input('> '))
except ValueError:
import sys
sys.exit(0);
print map(
lambda pos: ''.join(
(
l[pos%len(l)],
l[(pos+step)%len(l)]
)),
xrange(0, len(l))
)
输出:
@delphi# python manglechars.py
> 2
['BV', 'CD', 'VB', 'DC', 'BV', 'CC', 'VB', 'CC', 'BB', 'CD', 'BB', 'DC']
> 3
['BD', 'CB', 'VC', 'DV', 'BC', 'CB', 'VC', 'CB', 'BD', 'CB', 'BC', 'DV']
> 4
['BB', 'CC', 'VV', 'DC', 'BB', 'CC', 'VB', 'CD', 'BB', 'CC', 'BV', 'DD']
>