如何使用新编辑的值查找和替换 python 列表中的值
How to finding and replace value in a python list with new edited value
我正在尝试编写 python 代码来查找和替换列表中的值。
步骤:
- 我在列表中有一个元素
[8]
- 我需要找到当前元素(在我们的例子中是 8)减少值为 2,然后将(前缀和后缀)作为单独的元素添加到同一列表中
['6','8','6']
- 从最新列表中取出第一个元素(
'6'
),重复步骤1和步骤2('4','6','4'
),并替换为所有repeating/duplicate/reoccurring个第一个元素('6'
) 的列表。['4','6','4','8','4','6','4']
- 重复上述步骤,直到并且除非我们的第一个元素是 number>0。
['2','4','2','6','2','4','2','8','2','4','2','6','2','4','2']
另一个例子:
[10]
[8,10,8]
[6,8,6,10,6,8,6]
[4,6,4,8,4,6,4,10,4,6,4,8,4,6,4]
[2,4,2,6,2,4,2,8,2,4,2,6,2,4,2,10,2,4,2,6,2,4,2,8,2,4,2,6,2,4,2]
我能够做到 string_length<10
string = '8'
i = int(string)
while i>2:
print(string)
temp = str(int(string[0])-2) + string[0] + str(int(string[0])-2)
string = string.replace(string[0],temp)
i -= 2
print(string)
输出:
8
686
4648464
242624282426242
对于单个数字,我可以做到,但我遇到超过 9 的值的问题。
有人可以帮我编程吗?
有没有其他方法可以用列表做同样的事情?
首先,您的示例在字符串、字符串列表和整数列表之间不一致,但这里最简单的选项是整数列表,所以我将使用它。如果需要,您以后可以随时转换。
这是递归的好情况。您不会像问题中那样得到中间结果,但过程更加简化。
def expand(number, k=2):
if number == k:
return [number]
expansion = expand(number-k, k)
return expansion + [number] + expansion
print(expand(8)) # -> [2, 4, 2, 6, 2, 4, 2, 8, 2, 4, 2, 6, 2, 4, 2]
这段代码应该是自我记录的,但如果有任何不清楚的地方,请告诉我。
我正在尝试编写 python 代码来查找和替换列表中的值。
步骤:
- 我在列表中有一个元素
[8]
- 我需要找到当前元素(在我们的例子中是 8)减少值为 2,然后将(前缀和后缀)作为单独的元素添加到同一列表中
['6','8','6']
- 从最新列表中取出第一个元素(
'6'
),重复步骤1和步骤2('4','6','4'
),并替换为所有repeating/duplicate/reoccurring个第一个元素('6'
) 的列表。['4','6','4','8','4','6','4']
- 重复上述步骤,直到并且除非我们的第一个元素是 number>0。
['2','4','2','6','2','4','2','8','2','4','2','6','2','4','2']
另一个例子:
[10]
[8,10,8]
[6,8,6,10,6,8,6]
[4,6,4,8,4,6,4,10,4,6,4,8,4,6,4]
[2,4,2,6,2,4,2,8,2,4,2,6,2,4,2,10,2,4,2,6,2,4,2,8,2,4,2,6,2,4,2]
我能够做到 string_length<10
string = '8'
i = int(string)
while i>2:
print(string)
temp = str(int(string[0])-2) + string[0] + str(int(string[0])-2)
string = string.replace(string[0],temp)
i -= 2
print(string)
输出:
8
686
4648464
242624282426242
对于单个数字,我可以做到,但我遇到超过 9 的值的问题。
有人可以帮我编程吗?
有没有其他方法可以用列表做同样的事情?
首先,您的示例在字符串、字符串列表和整数列表之间不一致,但这里最简单的选项是整数列表,所以我将使用它。如果需要,您以后可以随时转换。
这是递归的好情况。您不会像问题中那样得到中间结果,但过程更加简化。
def expand(number, k=2):
if number == k:
return [number]
expansion = expand(number-k, k)
return expansion + [number] + expansion
print(expand(8)) # -> [2, 4, 2, 6, 2, 4, 2, 8, 2, 4, 2, 6, 2, 4, 2]
这段代码应该是自我记录的,但如果有任何不清楚的地方,请告诉我。