为什么我不能更改字符串?

时间:2019-08-28 10:47:32

标签: python

我想将字符串中的每个type Book struct { ID primitive.ObjectID `json:"id,omitempty" bson:"id,omitempty"` Name string `json:"name,omitempty" bson:"name,omitempty"` Author string `json:"author,omitempty" bson:"author,omitempty"` ISBN string `json:"isbn,omitempty" bson:"isbn,omitempty"` 更改为'0',但它完全没有改变。

'2'

5 个答案:

答案 0 :(得分:4)

ch循环中的

变量for是一个独立的实体,与列表元素无关。您可以使用以下1个班轮列表理解:

>>> nums = ['0','0','1','1']
>>> nums = [w.replace('0', '2') for w in nums]
>>> nums
['2', '2', '1', '1']
>>> 

答案 1 :(得分:2)

这不是修改数组条目(按值)的方式,可以使用索引代替:

for i, ch in enumerate(nums):
    if ch == '0':
        nums[i] = '2'

答案 2 :(得分:2)

ch变量仅包含列表中项目的值。

您可以通过列表理解来做到这一点:

[ch if ch != '0' else '2' for ch in nums]

或带有for循环

nums = ['0','0','1','1']
new_nums = []
for ch in nums:
    if ch == '0':
        new_nums.append('2')
    else
        new_nums.append(ch)

答案 3 :(得分:1)

您更新变量ch的值,而不用引用index更新列表的值。

需要使用索引值的引用来更新列表值。

nums = ['0','0','1','1']
for ch in range(0,len(nums)):
    if nums[ch] == '0':
        nums[ch] = '2'
print(nums)

输出:

['2', '2', '1', '1']  

答案 4 :(得分:0)

您的变量“ ch”是for循环的局部变量,仅从num中“提取”信息,更改其值不会更改列表中的元素。

尝试一下:

For index, ch in enumerate(nums):
if ch == ‘0’:
    nums[index] = ‘2’