Как заменить конкретное значение в списке? - PullRequest
0 голосов
/ 14 апреля 2019

У меня следующий список:

x = [['0_1 1_0']]

Я хочу заменить 0_1 на 0.

Это то, что я уже пробовал:

x[0].replace("0_1", "0")

Нотогда я получаю следующее erorr:

AttributeError: 'list' object has no attribute 'replace'

Ответы [ 4 ]

4 голосов
/ 14 апреля 2019

Это должно быть:

x[0][0] = x[0][0].replace("0_1", "0")

Поскольку:

>>> x = [['0_1 1_0']]
>>> x
[['0_1 1_0']]
>>> x[0]
['0_1 1_0']
>>> x[0][0]
'0_1 1_0'
>>> x[0][0] = x[0][0].replace("0_1", "0")
>>> x
[['0 1_0']]

И поскольку строки неизменяемы, вы не можете изменить их на месте, но должны переназначить их.

0 голосов
/ 14 апреля 2019

Таким образом, вы должны понимать, что экосистема, где вы можете использовать функцию замены.Например, если есть строка I want to replace string operation properly и вы хотите заменить replace на learn, вот как это работает.

string = "I want to replace string operation properly"
new_string = string.replace("replace", "learn")

В вашем случае строковый элемент находится внутри вложенного списка,Итак, сначала вам нужно получить доступ к элементу во вложенном списке:

test_list = [["foo_1"], ["foo_1"], ["bar_2"], ["soo_2"]]

new_list = []
for item in test_list: # iterate through the list and fix it
    print("Actual:", item[0])
    print("Replaced:", item[0].replace("foo", "who"))
    new_list.append(item[0].replace("foo", "who"))
0 голосов
/ 14 апреля 2019

вы определили список в список, поэтому вам нужно предоставить оба индекса для доступа к информации, которая в вашем случае записана как блок '0_1 1_0'. Как следствие, вам нужно изменить весь блок, а не только тот «0_1», который вы хотите.

x[0][0] = '0' #--> will generate x = [['0']].

Другой вариант - определить список, элемент за элементом:

x = ['0_1','1_0']

Затем вы можете заменить содержимое, указав соответствующий индекс

x[0] = '0'

Надеюсь, это сработает.

С наилучшими пожеланиями

Ramir

0 голосов
/ 14 апреля 2019

Поскольку у вас есть 2D-список, когда вы делаете x [0], вы получаете доступ к списку в списке. Так что x [0] [0] .replace ("0_1", "0")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...