切片子串

时间:2019-04-14 15:01:36

标签: python python-3.x substring slice

我被要求进行字符串循环并反向打印。我可以做到这一点,但是为什么祈祷词是开始它的最后一封信...

data = "Why am I doing this is reverse order."

for index in range(len(data)):
    print(index, data[-index])

0 W
1 .
2 r
3 e
4 d
5 r
6 o
7  
...

啊,这是我最近来的。...未添加数据[:-index],[-index:] ...它们都是错误的...

data = "Why am I doing this is reverse order."

for index in range(len(data)):
    print(index, data[-index])


0 W
1 .
2 r
3 e
4 d
5 r
6 o
7  
...

3 个答案:

答案 0 :(得分:2)

不要仅使用-,而是将索引替换为字符串len:

data = "Why am I doing this is reverse order."

l = len(data) - 1
for index in range(l+1):
    print(index, data[l-index])

输出:

0 .
1 r
2 e
...
34 y
35 h
36 W

或者,采用 pythonic 的方式使用reversed

for l in reversed(data):
    print(l)

您也可以使用切片data[::-1],但除非您需要字符串的反向副本,否则我会避免这种情况。

答案 1 :(得分:0)

如果您希望将其打印为句子,还可以:

reversed_data = data[::-1]
print(reversed_data)

OR

reversed_data = reversed(data)
print("".join(list(reversed_data)))

或者,如果您希望一个字符一个字符地

reversed_data = data[::-1]
for char in reversed_data:
    print(char)
reversed_data = reversed(data)
for char in reversed_data:
    print(char)

答案 2 :(得分:0)

您的实现无法正常工作的原因是,range(len(data))从0开始一直到n-1。但是,当您获得data[-index]的索引为0时,它将返回字符串的0元素;第一个字母。

一个简单的实现是:

data = 'Hello world!'

# Print every letter on different line
for x in data[::-1]:
    print(x)

# Print the reverse string on one line
print(data[::-1])

有关切片在python中的工作方式,请参见this post