Python 或者,用相应的索引替换字符串中的字符

Python 或者,用相应的索引替换字符串中的字符,python,string,list-comprehension,Python,String,List Comprehension,如何用相应的索引替换字符串中的可选字符而不进行迭代?例如: 'abcdefghijklmnopqrstuvwxyz' 应按以下方式返回: 'a1c3e5g7i9k11m13o15q17s19u21w23y25' 我有下面的代码来实现这一点。但是有没有一种方法可以跳过这个循环,或者更像是一种python的方法来实现这一点: 其中新建\u字符串保留我所需的值您可以使用,并将字符与重新连接;后者避免了重复(缓慢)的字符串连接: 请注意,您不能在这里回避迭代。即使您在这里定义了大量预先字符串化的奇数

如何用相应的索引替换字符串中的可选字符而不进行迭代?例如:

'abcdefghijklmnopqrstuvwxyz'
应按以下方式返回:

'a1c3e5g7i9k11m13o15q17s19u21w23y25'
我有下面的代码来实现这一点。但是有没有一种方法可以跳过这个循环,或者更像是一种python的方法来实现这一点:

其中
新建\u字符串
保留我所需的值

您可以使用,并将字符与重新连接;后者避免了重复(缓慢)的字符串连接:

请注意,您不能在这里回避迭代。即使您在这里定义了大量预先字符串化的奇数(
赔率=[str(i)for i in range(1,1000,2)]
),也要重复使用它来在列表上使用切片赋值
字符串列表[1::2]=赔率[:len(string)//2]
Python必须在引擎盖下迭代以重新分配索引。这就是处理任意长度序列的本质。

您可以使用,然后将字符重新连接到;后者避免了重复(缓慢)的字符串连接:


请注意,您不能在这里回避迭代。即使您在这里定义了大量预先字符串化的奇数(
赔率=[str(i)for i in range(1,1000,2)]
),也要重复使用它来在列表上使用切片赋值
字符串列表[1::2]=赔率[:len(string)//2]
Python必须在引擎盖下迭代以重新分配索引。这就是处理任意长度序列的本质。

用户提到他想跳过
for
循环。列表理解也是loop@MoinuddinQuadri不,它们不是,只不过是您使用的
map
而已。@moinuddinqadri:还有
map()
循环。你必须在这里,没有办法避免某种形式的迭代。如果我使用
list
而不是
str
,仍然建议使用列表理解,或者通过切片进行替换?@experimenting_python:它可能更快,但我发现使用
enumerate()
的列表理解更清晰,更容易阅读。用户提到他想跳过
for
循环。列表理解也是loop@MoinuddinQuadri不,它们不是,只不过是您使用的
map
而已。@moinuddinqadri:还有
map()
循环。你必须在这里,没有办法避免某种形式的迭代。如果我使用
list
而不是
str
,仍然建议使用列表理解,或者通过切片进行替换?@experimenting_python:它可能更快,但我发现使用
enumerate()
的列表理解更清晰,更容易阅读,“无需迭代”和“pythonic方式”。。。如果最具python风格的方式是使用迭代、“不迭代”和“python风格”。。。如果最具python风格的方法是迭代呢?
string = 'abcdefghijklmnopqrstuvwxyz'
new_string = ''
for i, c in enumerate(string):
    if i % 2:
        new_string += str(i)
    else:
        new_string += c
newstring = ''.join([str(i) if i % 2 else l for i, l in enumerate(string)])