這是我在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)
就我所見,代碼按預期工作。然而,出於某種原因,我覺得我在這裏殺死小狗。
例如,在這裏添加嵌套列表似乎是多餘的。
[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
非常感謝誰用這個解決方案提出了邁克·米勒!我重新發布了他的代碼的一個稍微修改過的版本,以表明BBrown的建議的價值。擁有有意義的名字對於像我這樣的初學者來說是一個不同的世界。
每行中是否只有一個單元格的值爲「CO」? – inspectorG4dget
你可以發佈一個實際運行的獨立示例;與進口和所有。這可以讓你更容易地嘗試你的方法。 –
@ inspectorG4dget'CO'可以在一行中出現多次。 – Kristjan