📌  相关文章
📜  在Python中从字符串中删除第 i 个字符的方法

📅  最后修改于: 2022-05-13 01:55:45.459000             🧑  作者: Mango

在Python中从字符串中删除第 i 个字符的方法

在Python中,众所周知,字符串是不可变的,因此在编写日常编程所需的结构时有时会造成明显的限制。本文提出了一个从字符串中删除第 i 个字符的问题,并讨论了可用于实现它们的可能解决方案。

方法1:朴素方法

在这种方法中,只需运行一个循环并在字符出现时追加它们,并从现有字符串构建一个新字符串,除非索引为 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) 时间复杂度)。

方法 2:使用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

方法3:使用切片+连接

一次可以使用字符串切片,对 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

方法 4:使用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