#python #string #list
Вопрос:
Я пытаюсь преобразовать строковый интервал (пример: ‘1:10’) в полезный целочисленный интервал (пример: 1:10). Дело в том, что мои методы не работают. Я попытался сослаться на интервал строк, но это не сработало:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
string_interval = '0:4'
x[string_interval]
Желаемый результат:
1, 2, 3, 4, 5
Я также попытался преобразовать string_interval в целое число с помощью int (), но это тоже не сработало.
Ответ №1:
Вы можете использовать экземпляр среза:
>>> x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> string_interval = '0:4'
>>> item = slice(*map(int, string_interval.split(":")))
>>> x[item]
[1, 2, 3, 4]
Ответ №2:
>>> idx = string_interval.split(':')
>>> x[int(idx[0]):int(idx[1]) 1]
[1, 2, 3, 4, 5]
Добавьте 1 в конечный индекс, потому что срезы в Python увеличиваются до, но не включают значение в конечный индекс.
Ответ №3:
Вы можете создать команду типа строки и оценить ее.
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
string_interval = '0:4'
x_str = f'x[{string_interval}]'
x_cmd = eval(x_str)
print(x_cmd) # it is still a list object`
Выход
[1, 2, 3, 4] #0:4 interval