Python 对迭代中具有重复元素的字符串进行分区

Python 对迭代中具有重复元素的字符串进行分区,python,python-3.x,Python,Python 3.x,我想迭代一个字符串并打印每个分区字符串的元组,如下所示: for letter in myString: ... myList = myString.partition(letter) ... print(myList) 这不是我想要的,因为partition在字母的第一个实例处分解字符串 假设我的目标是“披萨”。我想让这个for循环给我: ('', 'P', 'izza') ('P', 'i', 'zza') ('Pi', 'z', 'za') ('Piz', 'z', 'a

我想迭代一个字符串并打印每个分区字符串的元组,如下所示:

for letter in myString:
...     myList = myString.partition(letter)
...     print(myList)
这不是我想要的,因为
partition
字母的第一个实例处分解字符串

假设我的目标是“披萨”。我想让这个
for
循环给我:

('', 'P', 'izza')
('P', 'i', 'zza')
('Pi', 'z', 'za')
('Piz', 'z', 'a')
('Pizz', 'a', '')
但是,由于分区在它找到的第一个
“z”处断开,所以在第四次迭代中我得到了一些其他东西:

('', 'P', 'izza')
('P', 'i', 'zza')
('Pi', 'z', 'za')
('Pi', 'z', 'za')
('Pizz', 'a', '')
更改我的
for
循环的最简单方法是什么


编辑: 另一方面,为什么
分区
方法只将字符串作为参数?我想通过将一个数字传递到.partition,通过索引myString来解决我的问题

s = "Pizza"
for i in range(len(s)):
    print((s[:i],s[i],s[i+1:]))
您可以尝试以下方法:

for i in range(len(myString)):
     myList = (myString[:i], myString[i], myString[i+1:])
     print(myList)

根据您的用例,您可以将其打包到生成器中:

def expose_字母(单词):
对于范围内的i(len(word)):
产生字[:i],字[i],字[i+1:]
对于拆分字母(“披萨”):
打印(拆分)

partition是一种字符串方法,它将另一个字符串的一部分作为输入,以知道在何处进行分区
for i in range(len(myString)):
     myList = (myString[:i], myString[i], myString[i+1:])
     print(myList)