在python中使用list转换字符串

时间:2015-06-08 09:26:39

标签: python arrays

我一直试图通过从给定的字符串输入连续反转特定的字符串来重新排列字符串,并将限制作为输入。

例如,

限制是3

如果输入是Hellothegamestarts

输出必须是Heltolhegemastastr 它保存在单独的数组中 代码是:

while True: 
    t = int(input())
    if t == 0:
        break

    string = raw_input()
    string = string.encode('utf-8')
    leng = len(string)
    r = t/leng
    m = []
    leng = 0

    for i in range(r):
        if r % 2 == 0:
            l = 0
            l = leng + t
            for i in range(t):
                temp = string[l]
                m.append(temp)
                l = l - 1
            r = r + 1


            leng = leng + t

        else:
            l = 0
            l = leng

            for i in range(t):
                temp = string[l]
                m.append(temp)
                l = l + 1

            r = r + 1


            leng = leng + t


    print m

我得到的输出是[]并要求t的下一个输入。

感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

以3s的块块取出块,然后反转奇数块,例如:

import re

s = 'Hellothegamestarts'
r = ''.join(
    el if idx % 2 == 0 else el[::-1] 
    for idx, el in enumerate(re.findall('.{,3}', s))
)
# Heltolhegemastastr

答案 1 :(得分:1)

也许你可以试试 -

t = int(input())
if t == 0:
    break;

string = raw_input()
m = ''
leng = len(string)
i = 0
while i < leng:
    if (i/t) % 2 != 0:
        m = m + string[i+t-1:i-1:-1]
    else:
        m = m + string[i:i+t]
    i = i + t
print(m)

答案 2 :(得分:0)

或者你可以尝试这个

def  myfunc(s, count):
     return [''.join(x) for x in zip(*[list(s[z::count]) for z in range(count)])]

a='Hellothegamestarts'
lst=myfunc(a,3)
print "".join([i if lst.index(i) in range(0,len(lst),2) else i[::-1] for i in lst])

myfun我没有写。它来自here