获取一个python切片以仅反转字符串部分的顺序(交换字符串中的连续字符)?

获取一个python切片以仅反转字符串部分的顺序(交换字符串中的连续字符)?,python,Python,给定单词coral,我需要它给我每个字母对的反面。例如: ocral croal coarl corla 我得到的是: string = raw_input("Enter a word:") char_values = len(string) #length of string char_values = int(char_values) #converts to number print "DELETIONS:" for word_value in range(char_values):

给定单词coral,我需要它给我每个字母对的反面。例如:

ocral
croal
coarl
corla
我得到的是:

string  = raw_input("Enter a word:")
char_values = len(string) #length of string
char_values = int(char_values) #converts to number
print "DELETIONS:"
for word_value in range(char_values): 
print string[:word_value] + string[word_value+1:] #deletion pattern
print "TRANSPOSITIONS:"
for x in range(char_values):
print string[:x:-1]+string[x+2:] #shift pattern

在我的最后一行中,我在猜测。我在这里的结果是laroral laral lal.

这应该能帮到你:

#!/usr/bin/env python

wrd = raw_input('Enter a word: ')

for i in range(len(wrd) - 1):
    print wrd[0:i] + wrd[i+1] + wrd[i] + wrd[i+2:]
输出:

paul@local:~/Documents/src/sandbox$ ./rev.py
Enter a word: coral
ocral
croal
coarl
corla
paul@local:~/Documents/src/sandbox$ 
ocral
croal
coarl
corla

这应该可以为您做到:

#!/usr/bin/env python

wrd = raw_input('Enter a word: ')

for i in range(len(wrd) - 1):
    print wrd[0:i] + wrd[i+1] + wrd[i] + wrd[i+2:]
输出:

paul@local:~/Documents/src/sandbox$ ./rev.py
Enter a word: coral
ocral
croal
coarl
corla
paul@local:~/Documents/src/sandbox$ 
ocral
croal
coarl
corla

交换字符

string  = "apple"
char_values = len(string) #length of string
char_values = int(char_values) #converts to number
index  = 0
for word_value in range(char_values): 
    firstcharacter = string[word_value]
    others = string[:word_value] + string[word_value+1:]
    if index+1 < char_values:
        nextCharacter = string[index+1]
        print others[:index] + nextCharacter + firstcharacter+ others[index+1:]
    index = index +1

交换字符

string  = "apple"
char_values = len(string) #length of string
char_values = int(char_values) #converts to number
index  = 0
for word_value in range(char_values): 
    firstcharacter = string[word_value]
    others = string[:word_value] + string[word_value+1:]
    if index+1 < char_values:
        nextCharacter = string[index+1]
        print others[:index] + nextCharacter + firstcharacter+ others[index+1:]
    index = index +1

nextCharacter=string[index+1]将在上一次迭代中为您提供一个索引器,而index=string.indexfirstcharacter将不能很好地处理具有重复字符的单词,如“apple”。@PaulGriffiths抱歉,我没有注意到这两种情况。现在我想知道如何解决这两个问题。请看一看我知道这是不必要的复杂是的,有点复杂,纳宾。变量名有点混乱,因为string是标准模块,index是内置序列类型的方法。char\u values=intchar\u值是多余的,因为lenstring已经是int了,但我意识到您刚才从问题中复制了它。在Python中,不需要存储这些序列类型的长度,因为它已经存储为对象的属性。您保存firstcharacter,但只使用一次。OTOH,每个循环计算索引+1 4次。一旦删除了不必要的赋值和测试,并改进了名称,代码如下所示:word=apple for i in RangeWord-1:others=word[:i]+word[i+1:];print others[:i]+word[i+1]+word[i]+others[i+1:]与@PaulGriffiths.nextCharacter=string[index+1]非常相似,在上一次迭代中,index=string.indexfirstcharacter将为您提供一个索引器,而index=string.indexfirstcharacter无法处理具有重复字符的单词,就像“苹果”一样。@PaulGriffiths抱歉我没有注意到这两个案例。现在我想知道如何解决这两个问题。请看一看我知道这是不必要的复杂是的,有点复杂,纳宾。变量名有点混乱,因为string是标准模块,index是内置序列类型的方法。char\u values=intchar\u值是多余的,因为lenstring已经是int了,但我意识到您刚才从问题中复制了它。在Python中,不需要存储这些序列类型的长度,因为它已经存储为对象的属性。您保存firstcharacter,但只使用一次。OTOH,每个循环计算索引+1 4次。一旦删除了不必要的赋值和测试,并改进了名称,代码如下所示:word=apple for i in RangeWord-1:others=word[:i]+word[i+1:];打印其他[:i]+word[i+1]+word[i]+others[i+1:],这与@PaulGriffiths非常相似。回答不错,Paul,除了使用str作为变量名之外。。。我的变体:word[0:i]+word[i:i+2][::-1]+word[i+2:]但我想它的效率比你的略低。别担心,保罗。我刚做了一个快速的timeit.py测试。我的表达式比你的长10%左右。回答不错,Paul,除了使用str作为变量名之外。。。我的变体:word[0:i]+word[i:i+2][::-1]+word[i+2:]但我想它的效率比你的略低。别担心,保罗。我刚做了一个快速的timeit.py测试。我的表情比你的长10%左右。