Python 在字符串中一次更改一个字符,don';你不能换绳子吗?
我有一个字符串:Python 在字符串中一次更改一个字符,don';你不能换绳子吗?,python,Python,我有一个字符串: 'ABCDEFGH' 我想循环遍历字符串,并逐个将每个字符替换为4个字符中的一个(1,2,3,4): 等 等等。然而,每次我尝试,我最终改变了原始字符串,我的输出结果是1的字符串 “1111111” 示例代码如下: letters = 'ABCDEFGH' s = list(letters) y = 0 while y < len(s): s[y] = '1' y = y + 1 letters='ABCDEFGH' s=列表(字母) y=0 当y
'ABCDEFGH'
我想循环遍历字符串,并逐个将每个字符替换为4个字符中的一个(1,2,3,4):
等
等等。然而,每次我尝试,我最终改变了原始字符串,我的输出结果是1的字符串
“1111111”
示例代码如下:
letters = 'ABCDEFGH'
s = list(letters)
y = 0
while y < len(s):
s[y] = '1'
y = y + 1
letters='ABCDEFGH'
s=列表(字母)
y=0
当y
每次重新初始化列表
while y < len(letters):
s = list(letters)
s[y] = '1'
y = y + 1
dosomethingwith(s)
而y
每次重新初始化列表
while y < len(letters):
s = list(letters)
s[y] = '1'
y = y + 1
dosomethingwith(s)
而y
每次重新初始化列表
while y < len(letters):
s = list(letters)
s[y] = '1'
y = y + 1
dosomethingwith(s)
而y
每次重新初始化列表
while y < len(letters):
s = list(letters)
s[y] = '1'
y = y + 1
dosomethingwith(s)
而y
不要更改迭代之间重复使用的列表,而是每次生成一个新列表并替换一个字符:
for i in range(len(letters)):
s = list(letters)
s[i] = '1'
print(''.join(s))
您可以将其与嵌套循环相结合:
for digit in '1234':
for i in range(len(letters)):
s = list(letters)
s[i] = digit
print(''.join(s))
本质上,您创建的是'1234'
的产品和范围(len(字母))
中的一个位置,因此您可以使用它来创建单个循环:
from itertools import product
for digit, pos in product('1234', range(len(letters))):
s = list(letters)
s[pos] = digit
print(''.join(s))
通过一点技巧,您可以将其作为一个一行生成器表达式来生成所有组合:
from itertools import product
all_combos = (
''.join([digit if i == pos else c for i, c in enumerate(letters)])
for digit, pos in product('1234', range(len(letters))))
这将在字母
上动态地构建一个新列表,将位置pos
处的一个字符替换为数字
演示:
每次生成一个新列表并替换一个字符,而不是更改迭代之间重复使用的列表:
for i in range(len(letters)):
s = list(letters)
s[i] = '1'
print(''.join(s))
您可以将其与嵌套循环相结合:
for digit in '1234':
for i in range(len(letters)):
s = list(letters)
s[i] = digit
print(''.join(s))
本质上,您创建的是'1234'
的产品和范围(len(字母))
中的一个位置,因此您可以使用它来创建单个循环:
from itertools import product
for digit, pos in product('1234', range(len(letters))):
s = list(letters)
s[pos] = digit
print(''.join(s))
通过一点技巧,您可以将其作为一个一行生成器表达式来生成所有组合:
from itertools import product
all_combos = (
''.join([digit if i == pos else c for i, c in enumerate(letters)])
for digit, pos in product('1234', range(len(letters))))
这将在字母
上动态地构建一个新列表,将位置pos
处的一个字符替换为数字
演示:
每次生成一个新列表并替换一个字符,而不是更改迭代之间重复使用的列表:
for i in range(len(letters)):
s = list(letters)
s[i] = '1'
print(''.join(s))
您可以将其与嵌套循环相结合:
for digit in '1234':
for i in range(len(letters)):
s = list(letters)
s[i] = digit
print(''.join(s))
本质上,您创建的是'1234'
的产品和范围(len(字母))
中的一个位置,因此您可以使用它来创建单个循环:
from itertools import product
for digit, pos in product('1234', range(len(letters))):
s = list(letters)
s[pos] = digit
print(''.join(s))
通过一点技巧,您可以将其作为一个一行生成器表达式来生成所有组合:
from itertools import product
all_combos = (
''.join([digit if i == pos else c for i, c in enumerate(letters)])
for digit, pos in product('1234', range(len(letters))))
这将在字母
上动态地构建一个新列表,将位置pos
处的一个字符替换为数字
演示:
每次生成一个新列表并替换一个字符,而不是更改迭代之间重复使用的列表:
for i in range(len(letters)):
s = list(letters)
s[i] = '1'
print(''.join(s))
您可以将其与嵌套循环相结合:
for digit in '1234':
for i in range(len(letters)):
s = list(letters)
s[i] = digit
print(''.join(s))
本质上,您创建的是'1234'
的产品和范围(len(字母))
中的一个位置,因此您可以使用它来创建单个循环:
from itertools import product
for digit, pos in product('1234', range(len(letters))):
s = list(letters)
s[pos] = digit
print(''.join(s))
通过一点技巧,您可以将其作为一个一行生成器表达式来生成所有组合:
from itertools import product
all_combos = (
''.join([digit if i == pos else c for i, c in enumerate(letters)])
for digit, pos in product('1234', range(len(letters))))
这将在字母
上动态地构建一个新列表,将位置pos
处的一个字符替换为数字
演示:
非常感谢。虽然所有的答案都很好,但你的答案是最深入的。谢谢!虽然所有的答案都很好,但你的答案是最深入的。谢谢!虽然所有的答案都很好,但你的答案是最深入的。谢谢!虽然所有的答案都很好,但你的答案是最深刻的。