Python: как сгенерировать char путем добавления int

Я могу использовать 'a' + 1, чтобы получить 'b' на языке C, поэтому какой способ сделать это в Python? Я могу написать это как:

chr(ord('a')+1)

но я не знаю, лучший ли это.

Ответы

Ответ 1

Да, это лучший способ. Python не автоматически конвертирует между символом и int, как это делают C и С++.

Ответ 2

Python фактически не имеет типа символа, в отличие от C, поэтому да, chr (ord - это способ сделать это.

Если вы хотите сделать это немного более чисто, вы можете сделать что-то вроде:

def add(c, x):
  return chr(ord(c)+x)

Ответ 3

В Python существует тип bytearray он медленнее, чем обычные строки, но ведет себя в основном как строка C: он изменчив, аридирующие отдельные элементы поднимают 0 - 255 целых чисел, вставляют подстроки с длиной 1, и вы можете назначать элементы. Тем не менее, он представлен как строка, а в Python 2 может использоваться в большинстве случаев, когда строка может не быть передана объекту str:

>>> text = bytearray("a")
>>> text
bytearray(b'a')
>>> print text
a
>>> text[0]+=1
>>> print text
b
>>> text[0]
98
>>> print "other_text" + text
other_textb

При использовании Python 3 для использования содержимого bytearray в качестве текстового объекта просто вызовите его метод декодирования с соответствующей кодировкой, такой как "latin1" или utf-8 ":

>>> print ("other_text" + text.decode("latin1"))

Ответ 4

То, что вы делаете, действительно правильно. Python не связывает символ с его числовым кодом, как это делают C и подобные языки. Причина в том, что как только вы выходите за пределы ASCII, одно и то же целочисленное значение может представлять разные символы, в зависимости от кодировки. C подчеркивает прямой доступ к основным аппаратным форматам, но python подчеркивает четко определенную семантику.