#python #string #list
#python #строка #Список
Вопрос:
Я запускаю приведенный ниже код, и он работает только со списком внутри списка. Я хочу, чтобы моим результатом были кортежи внутри списка, как во внутренних скобках. Я попытался написать круглые скобки вместо [], но я получаю синтаксическую ошибку.
import xlrd
loc= (r"C:UsersUSERDocumentsMATLAB/results.xlsx")
book = xlrd.open_workbook(loc)
trans_agg= [[sheet.cell_value(r, c) for c in range (1,4)]for r in range(1,sheet.nrows)];
print (trans_agg)
что я получаю в результате;
[[-38.9681738617398, 35.220378959142636, 5.072061633983768], [0.3058390201478544, -32.91896886230741, 5.0755459371576075], [0.16656016242917882, 37.047877143990405, 5.08026752912042]]
чего я на самом деле хочу;
[(-38.9681738617398, 35.220378959142636, 5.072061633983768), (0.3058390201478544, -32.91896886230741, 5.0755459371576075), (0.16656016242917882, 37.047877143990405, 5.08026752912042)]
Ответ №1:
Вы должны заменить в вашем понимании списка квадратные скобки для вызова функции tuple
trans_agg= [tuple(sheet.cell_value(r, c) for c in range (1,4))
for r in range(1, sheet.nrows)]
Комментарии:
1. это то, что я получаю, когда я пишу это таким образом; [<объект генератора <genexpr> в 0x000000000363E8B8>, <объект генератора <genexpr> в 0x000000000366A708>]
2. В Python нет понимания кортежей; вам нужно явно вызвать
tuple(sheet.cell_value(r, c) for c in range(1,4))
.