Python:字符串反向中途停止

时间:2017-07-18 15:37:24

标签: python string python-3.x reverse

我正在编写一个函数来反转一个字符串,但它还没有完成它直到结束。我在这里错过了什么吗?

def reverse_string(str):
    straight=list(str)
    reverse=[]
    for i in straight:
        reverse.append(straight.pop())
    return ''.join(reverse)

print ( reverse_string('Why is it not reversing completely?') )

4 个答案:

答案 0 :(得分:5)

问题是你从原始元素 let maxNumberOfRepeats = 10 var currentNumberOfRepeats = 0 Timer.scheduledTimer(withTimeInterval: 5, repeats: true) { timer in currentNumberOfRepeats = currentNumberOfRepeats + 1 if currentNumberOfRepeats == maxNumberOfRepeats { timer.invalidate() UIView.animate(withDuration: 1, animations: { self.backgroundColor = UIColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0) //return to first color }) } else { UIView.animate(withDuration: 1, animations: { self.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0) //or any other random color }) } } 元素,从而改变了列表的长度,所以循环将停止在元素的一半。

通常,这可以通过创建临时副本来解决:

pop

但是,如果是倒车,您可以使用现有的(更简单的)替代方案:

切片:

def reverse_string(a_str):
    straight=list(a_str)
    reverse=[]
    for i in straight[:]:  # iterate over a shallow copy of "straight"
        reverse.append(straight.pop())
    return ''.join(reverse)

print(reverse_string('Why is it not reversing completely?'))
# ?yletelpmoc gnisrever ton ti si yhW

>>> a_str = 'Why is it not reversing completely?' >>> a_str[::-1] '?yletelpmoc gnisrever ton ti si yhW' 迭代器:

reversed

答案 1 :(得分:1)

在python中,您可以使用步骤迭代器来反转字符串

print('hello'[::-1])

将反转字符串

答案 2 :(得分:1)

有一种更容易的逆转方式:

>>> 'my string'[::-1]
'gnirts ym'

答案 3 :(得分:0)

您可以使用从列表的最后一个索引到零索引的循环,然后在另一个列表中使用append,然后使用join来获得反向归档。

def reverse_string(str):
    straight=list(str)
    print straight
    reverse=[]
    for i in range(len(straight)-1,-1,-1):
        reverse.append(straight[i])
    return ''.join(reverse)


print ( reverse_string('Why is it not reversing completely?') )