如何在Python中反转字符串

在Python中,反转字符串最快,最简单的方法是扩展切片[::-1]

print("hello world"[::-1])    # dlrow olleh

本文将向您展示几种在Python中反转字符串的方法。

  • [::-1]逆序切片。 (好)
  • [::-1]切片工具作为函数。 (好)
  • 反向和联接(反向字符串和单词)(确定)
  • Python循环(教育目的)

1. Python Slice [::-1]

在Python中,我们可以使用[::-1]来反转字符串,也就是扩展slice 。 以下是切片语法:

string[start:stop:step]
  • start –开始位置,默认为0。(包括此字符串)
  • stop –停止位置。 (不包括此字符串)
  • stepstep切片元素,默认为1 –取每个元素,如果step = 2,则取每个第二元素。

这是一个字符串“ abcdefghijk”及其内部索引。

Index 0 and -1

  a    b    c   d   e   f   g   h   i   j   k
  0    1    2   3   4   5   6   7   8   9   10 (index starts at 0)
 -11  -10  -9  -8  -7  -6  -5  -4  -3  -2  -1  (reverse index starts at -1)

1.1步骤默认为1。此切片[2:5]将char从索引2移到索引5(不包括此char)。

print("abcdefghijk"[2:5])      # c d e
print("abcdefghijk"[2:5:1])    # c d e

"""
a  b  {c  d  e  f}  g  h  i  j  k
0  1  {2  3  4  5}  6  7  8  9  10 = index
"""

1.2此切片[2:]从索引2到字符串的末尾获取char。

print("abcdefghijk"[2:])    # c d e f g h i j k

"""
a  b  {c  d  e  f  g  h  i  j  k}
0  1  {2  3  4  5  6  7  8  9  10} = index
"""

1.3对于此slice [2::2] ,步骤为2,它将获得从索引2开始到索引末尾的偶数索引(每个第二索引)。

print("abcdefghijk"[2::2])   # c e g i k

"""
a  b  {c}  d  {e}  f  {g}  h  {i}  j  {k}
0  1  {2}  3  {4}  5  {6}  7  {8}  9  {10} = index
"""

1.4对于此切片[::-1][-1::-1] ,结果相同,字符串将反转。

print("abcdefghijk"[::-1])    # k j i h g f e d c b a
print("abcdefghijk"[-1::-1])  # k j i h g f e d c b a

"""
[::] = step default is 1.
|--------------------------------------------------->>>
{a}  {b}  {c}  {d}  {e}  {f}  {g}  {h}  {i}  {j}  {k}
{0}  {1}  {2}  {3}  {4}  {5}  {6}  {7}  {8}  {9}  {10}

[::-1] = if step is -1, reverse order.
<<<---------------------------------------------------|
{a}  {b}  {c}  {d}  {e}  {f}  {g}  {h}  {i}  {j}  {k}
{0}  {1}  {2}  {3}  {4}  {5}  {6}  {7}  {8}  {9}  {10}
"""

步长= -1
在Python slice中,如果步长为-1 ,则表示倒序,并且起始位置默认为-1

1.5对于此切片[:4:-1] ,字符串将反向直到索引4(第5个位置,排除此字符)。

print("abcdefghijk"[:4:-1])  # k j i h g f

"""
[:4:-1]
               <<<--------------------------|
a  b  c  d  e  {f}  {g}  {h}  {i}  {j}  {k}
0  1  2  3  4  {5}  {6}  {7}  {8}  {9}  {10}  = index
"""

1.6对于此切片[-2:4:-1][-2:-7:-1] ,结果是相同的。 该分片以相反的顺序获取char,从索引-2或9开始,直到索引-7或4(不包括索引)。

print("abcdefghijk"[-2:4:-1])   # j i h g f
print("abcdefghijk"[-2:-7:-1])  # j i h g f

print("abcdefghijk"[9:4:-1])    # j i h g f
print("abcdefghijk"[9:-7:-1])   # j i h g f

"""
                       <<<-----------------------|
 a    b    c   d   e   {f}   {g}   {h}   {i}   {j}  k
 0    1    2   3   4   {5}   {6}   {7}   {8}   {9}  10  = index
-11  -10  -9  -8  -7  {-6}  {-5}  {-4}  {-3}  {-2} -1   = index (reverse order)
"""

2. [::-1]作为功能

相同的slice [::-1] ,它实现为一个函数。

def reversed_string(val, start=None, stop=None):
    return val[start:stop:-1]

print(reversed_string("abcdefghijk"))           # k j i h g f e d c b a

print(reversed_string("abcdefghijk", -2, 4))    # j i h g f

3.撤消并加入

3.1此Python代码段使用两个内置函数reserved()join()来反转字符串。

string = "abcdefghijk"

print("".join(reversed(string)))

输出量

Terminal
kjihgfedcba

3.2如果我们将相同的技术与split() ,我们可以反转单词。

string = "Hello World Python Slice"

print(" ".join(reversed(string.split(" "))))

输出量

Terminal
Slice Python World Hello

4. Python循环

这段Python代码出于良好的教育目的,它将元素从最后一个索引循环到开始的索引,并将其放入列表中,最后,加入列表并返回一个字符串。

def reverse_a_string(string):
    a_list = []                         # a new list
    index = len(string)                 # total length of a string, last index

    while index:                        # loop from the last index to the beginning index
        index -= 1                      # index = index - 1 , reverse one by one
        a_list.append(string[index])    # append to the list

    return "".join(a_list)              # join everything.

result = reverse_a_string("abcdefghijk")
print(result)   # kjihgfedcba

输出量

Terminal
kjihgfedcba

参考文献

翻译自: https://mkyong.com/python/how-to-reverse-a-string-in-python/

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值