这是我在 Excel 工作表上查找特定值位置的函数。
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)
据我所知,代码按预期工作。然而,出于某种原因,感觉就像我在这里杀死小狗一样。
例如,在这里添加嵌套列表似乎是多余的。
[x + 1, y + 1]
并且需要另一行代码来消除这种愚蠢。
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 建议的价值。对于像我这样的初学者来说,拥有有意义的名字会让世界变得不同。