Я построил эту простую маленькую функцию для разделения 6-символьной строки на два сегмента, но почему она не возвращает два 3-буквенных результата? Т.е. я бы подумал:

FXPair [0: 2] => 0, 1, 2 с точки зрения индексации?

def ISOCodes(FXPair):
    ccy1 = FXPair[0:2]
    ccy2 = FXPair[3:5]
    return [ccy1, ccy2]

ISOCodes('USDCAD')

['US', 'CA']

-1
keynesiancross 27 Май 2017 в 23:42

2 ответа

Лучший ответ

Индексация точно такая же для строк и списков, и фактически для любого индексируемого объекта.

Однако вы неправильно поняли, как работает нарезка. Ломтики полуоткрыты ; другими словами, нижняя граница включена, а верхняя - нет. Нарезка чего-либо [0:2] дает вам только индексы 0 и 1, и аналогично [3:5] дает вам только 3 и 4.

6
Daniel Roseman 27 Май 2017 в 20:46

Вы можете использовать [: 3] и [3:] как следующие:

def ISOCodes(FXPair):
    ccy1 = FXPair[:3]
    ccy2 = FXPair[3:]
    return [ccy1, ccy2]

Выход:

['USD', 'CAD']
2
Mohd 27 Май 2017 в 20:49