Python: обновить список, добавив строку ко всем элементам

1

Python 2.7, Windows 10

У меня есть код, который находит все имена листов файла excel, затем помещает, затем разбивает строку и помещает ее в список. Следующему шагу моего кода необходимо прикрепить путь к именам листов в списке. Путь к файлу будет постоянной.

Я понимаю, что этот код неверен, но я просто должен быть в состоянии сделать что-то вроде этого:

List = ['test1', 'test2', 'test3']
for i in list
    print("file_Path" + i)   

'file_path test1'
'file_path test2'

Но мне нужно обновить список или добавить новый список вместо печати. Каков наилучший способ сделать это. Мне было довольно сложно найти хороший ответ на этот вопрос, но я понимаю, что могу искать не в том месте.

Спасибо!

  • 2
    List = ['file_Path ' + i for i in List]
  • 0
    newList = [ "{} {}".format(yourPath,x) for x in List]
Показать ещё 2 комментария
Теги:
python-2.7

6 ответов

1
Лучший ответ

Как было предложено людьми в разделе комментариев, ваш лучший выбор для этого типа задач - это использование списка, например,

['file_Path ' + i for i in List]

Теперь я хотел добавить ответ, потому что я хотел добавить, что List определенно не является хорошим выбором для именования для вашего объекта list.

Я бы пошел с чем-то более значимым и дальше от ключевого слова list

(например, sheet_names)

sheet_names = ['test1', 'test2', 'test3']
sheet_names = ['file_Path ' + i for i in sheet_names]
print(sheet_names)
>>>>['file_Path test1', 'file_Path test2', 'file_Path test3']
  • 0
    Я никогда не использую List как переменную. Я просто использую это как пример. Спасибо за головы, хотя.
0

Вы можете попробовать комбинацию map и add которая добавляет два элемента списка.

from operator import add
test = ['test1', 'test2', 'test3']
path = ['file_Path '] * len(test)
list(map(add, path, test))

Выход

['file_Path test1', 'file_Path test2', 'file_Path test3']
0

Просто воспользуйтесь списком:

List = ['test1', 'test2', 'test3']
file_paths = ['file_path: %s' % (fp,) for fp in List]
0
list = ['test1', 'test2', 'test3']
for i in range(len(list)):
    list[i] = 'file_path ' + list[i]

Или воспользовавшись списком:

list = ['test1', 'test2', 'test3']
new_list = ['file_path ' + item for item in list]
0

Я думаю, что это будет лучшим способом, поскольку я всегда использую это

oldList = ['test1','test2','test3']
newList = list(map(lambda a:"file path "+a,oldList))

Он выглядит функциональным

  • 2
    это выглядит функционально, но намного менее читабельно, чем ['file_Path ' + x for x in List] .
0

Вы можете использовать представление списка для выполнения этой задачи -

List = ['test1', 'test2', 'test3']
file_path = 'your/file/path'
newList = [file_path+SheetName for SheetName in List]

Или вы можете использовать комбинацию карт + лямбда -

newList = list(map(lambda x: file_path+x , List))
  • 0
    filter фильтрует элементы, он не меняет их. Вы думаете о list(map(lambda x: file_path+x , List))
  • 0
    @PatrickHaugh, да, я был! Я отредактировал свой ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню