Используя питона, чтобы изменить информацию о справочнике с кодом остроты

У меня есть этот код, чтобы изменить информацию о справочнике у питона. Я хотел бы изменить '/a/b/c' в '/x/b/c'.

import os

x = "/a/b/c"
y = x.split(os.sep)
y[1] = 'x'
os.sep.join(y)

Теперь я просто хочу знать, может ли питон сделать его остротой. Я не могу просто использовать os.sep.join (x.split (os.sep) [1] = 'x') , поскольку это вызывает синтаксическую ошибку. Каковы могли бы быть другие варианты у питона?

2
nl ja de
Почему необходимо сделать это в одной линии?
добавлено автор Jakob Bowyer, источник

3 ответы

os.sep.join('x' if idx == 1 else element
            for idx, element in enumerate(x.split(os.sep)))

результат:

'/x/b/c'

Объяснение: перечисляет пары каждый элемент x.split (os.sep) с его индексом. 'x', если idx == 1 еще элемент заменяет элемент 'x', если это - 1th элемент, и оставляет его неповрежденным иначе.

3
добавлено

Это, вероятно, довольно неэффективно:

y = os.sep.join([x.split(os.sep)[0]] + ['x'] + x.split(os.sep)[2:])
2
добавлено
Если вы don' t хотят звонить разделение дважды, вы могли использовать функцию лямбды, как это: (элементы лямбды: os.sep.join ([элементы [0]] + [' x'] + элементы [2:])) (x.split (os.sep))
добавлено автор Kevin, источник
Да, it' s очень полезный для острот, так как назначение невозможно. Каждый раз, когда вы спрашиваете себя, "как я вычисляю стоимость однажды и использую ее многократно позже?", рассмотрите использование лямбду .
добавлено автор Kevin, источник
@Kevin That' s довольно умный! Мне нравится он.
добавлено автор zigg, источник

Это, кажется, работает также:

y = os.sep + 'x'+ x[2:]
0
добавлено
You' право ре, я имел в виду только данный пример.
добавлено автор doru, источник
Это делает для случая в качестве примера, но потерпело бы неудачу во многих ситуациях, таких как x не начинающийся с os.sep , справочник верхнего уровня содержал больше чем один характер, если os.sep сам wasn' t отдельный символ... это - то, почему использование os.path , функции так важны.
добавлено автор zigg, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community