在Python中从字符串中删除第 i 个字符的方法
在Python中,众所周知,字符串是不可变的,因此在编写日常编程所需的结构时有时会造成明显的限制。本文提出了一个从字符串中删除第 i 个字符的问题,并讨论了可用于实现它们的可能解决方案。
在这种方法中,只需运行一个循环并在字符出现时追加它们,并从现有字符串构建一个新字符串,除非索引为 i。
代码 #1:演示从字符串中删除 i'th char 的 Naive 方法。
# Python code to demonstrate
# method to remove i'th character
# Naive Method
# Initializing String
test_str = "GeeksForGeeks"
# Printing original string
print ("The original string is : " + test_str)
# Removing char at pos 3
# using loop
new_str = ""
for i in range(len(test_str)):
if i != 2:
new_str = new_str + test_str[i]
# Printing string after removal
print ("The string after removal of i'th character : " + new_str)
输出:
The original string is : GeeksForGeeks
The string after removal of i'th character : GeksForGeeks
注意:此解决方案比其他方法慢得多(具有 O(n^2) 时间复杂度)。如果需要速度,方法 #3 在逻辑上相似并且更快(它具有 O(n) 时间复杂度)。
str.replace()
replace()
可能用于执行删除任务,因为我们可以用空字符替换特定索引,从而解决问题。
缺点:这种方法的主要缺点是,如果字符串中存在与 pos 处的字符匹配的重复项,则它会失败。一世。 replace()
替换所有出现的特定字符,因此将替换所有出现在 pos i 处的所有字符。如果替换字符第一次出现在字符串中,我们有时仍然可以使用此函数。
代码 #2:演示使用str.replace()
删除第 i 个字符。
# Python code to demonstrate
# method to remove i'th character
# using replace()
# Initializing String
test_str = "GeeksForGeeks"
# Printing original string
print ("The original string is : " + test_str)
# Removing char at pos 3
# using replace
new_str = test_str.replace('e', '')
# Printing string after removal
# removes all occurrences of 'e'
print ("The string after removal of i'th character( doesn't work) : " + new_str)
# Removing 1st occurrence of s, i.e 5th pos.
# if we wish to remove it.
new_str = test_str.replace('s', '', 1)
# Printing string after removal
# removes first occurrences of s
print ("The string after removal of i'th character(works) : " + new_str)
输出:
The original string is : GeeksForGeeks
The string after removal of i'th character( doesn't work) : GksForGks
The string after removal of i'th character(works) : GeekForGeeks
一次可以使用字符串切片,对 pos i 之前的字符串进行切片,在 pos i 之后切片。然后使用两者的字符串连接,第 i 个字符可能会从字符串中删除。代码#3:演示使用切片和连接来删除第 i 个字符。
# Python code to demonstrate
# method to remove i'th character
# using slice + concatenation
# Initializing String
test_str = "GeeksForGeeks"
# Printing original string
print ("The original string is : " + test_str)
# Removing char at pos 3
# using slice + concatenation
new_str = test_str[:2] + test_str[3:]
# Printing string after removal
# removes ele. at 3rd index
print ("The string after removal of i'th character : " + new_str)
输出 :
The original string is : GeeksForGeeks
The string after removal of i'th character : GeksForGeeks
str.join()
和列表理解在这种方法中,首先将字符串的每个元素转换为list的每个元素,然后将它们中的每个元素连接起来,形成一个字符串,除了指定的索引。代码 #4:演示str.join()
和列表理解以删除第 i 个索引字符。
# Python code to demonstrate
# method to remove i'th character
# using join() + list comprehension
# Initializing String
test_str = "GeeksForGeeks"
# Printing original string
print ("The original string is : " + test_str)
# Removing char at pos 3
# using join() + list comprehension
new_str = ''.join([test_str[i] for i in range(len(test_str)) if i != 2])
# Printing string after removal
# removes ele. at 3rd index
print ("The string after removal of i'th character : " + new_str)
输出 :
The original string is : GeeksForGeeks
The string after removal of i'th character : GeksForGeeks