Вот моя функция поиска местоположения определенных значений на листе Excel.Uncool List Comprehension
from xlwings import Workbook, Range
workbook = Workbook('workbook location')
def get_data_locations():
""" Find data locations from the first sheet in document. """
first_sheet = Range('Sheet1', 'A1:Z200').value
coordinates = []
for x in range(len(first_sheet)):
coordinate_pair = [[x + 1, y + 1] for y, z in enumerate(first_sheet[x]) if z == 'CO']
if not coordinate_pair == []:
coordinates.append(coordinate_pair)
coordinates = [cp for [cp] in coordinates]
print(coordinates)
Насколько я могу судить, код работает по назначению. Однако по какой-то причине мне кажется, что я убиваю щенков здесь.
Например, добавление вложенного списка здесь кажется излишним.
И требуется еще одна строка кода, чтобы удалить эту глупость.
coordinates = [cp for [cp] in coordinates]
Я действительно очарован красотой Python и был бы признателен за любую помощь в том, чтобы сделать мой собственный код еще более очаровательным.
Спасибо!
Прохладный список понимание:
def get_data_locations():
""" Find data locations from the first sheet in document. """
first_sheet = Range('Sheet1', 'A1:Z200').value
coordinates = []
for row_i, row in enumerate(first_sheet, 1):
coordinates.extend([(row_i, col_i) for col_i, col in enumerate(row, 1) if col == 'CO'])
return coordinates
Большое спасибо Mike Müller, который придумал с этим решением! Я повторно опубликовал слегка измененную версию своего кода, чтобы выявить ценность предложения BBrown. Наличие значимых имен делает мир различий для новичка, подобного мне.
Есть ли только одна ячейка в каждой строке, которая имеет значение «CO»? – inspectorG4dget
Можете ли вы опубликовать самодостаточный пример, который фактически выполняется; с импортом и всем. Это упростит эксперимент с вашим подходом. –
@ inspectorG4dget 'CO' может появляться несколько раз в одной строке. – Kristjan