DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

ord, sorted & reversed in Python

Buy Me a Coffee

*Memo for a string, bytes and bytearray:

ord() can get a Unicode code point from a character or byte:

*Memo:

  • The 1st argument is c(Required-Type:str or Bytes-like object except memoryview):
    • Don't use c=.
  • In addition, chr() can get a character from a Unicode code point:
    • The 1st argument is i(Required-Type:int):
      • Don't use i=.

<String & Bytes & Bytearray>:

print(ord('A')) print(ord(b'A')) print(ord(bytearray(b'A'))) # 65 
Enter fullscreen mode Exit fullscreen mode
print(chr(65)) # A 
Enter fullscreen mode Exit fullscreen mode

sorted() can convert a string, bytes and bytearray to a list, then sort the list, then the sorted list is converted to a string, bytes and bytearray with join(), bytes() and bytearray() respectively as shown below:

*Memo:

  • The 1st argument is iterable(Required-Type:Iterable):
    • Don't use iterable=.
  • The 2nd argument is key(Optional-Default:None-Type:Callable or NoneType).
  • The 3rd argument is reverse(Optional-Default:False-Type:bool) to reverse the list.
  • sorted() creates a copy:
    • Be careful, sorted() does shallow copy instead of deep copy as my issue.

<String>:

v = 'DAECB' print(sorted(v)) # ['A', 'B', 'C', 'D', 'E']  print(''.join(sorted(v))) # ABCDE  print(''.join(sorted(v, reverse=True))) # EDCBA 
Enter fullscreen mode Exit fullscreen mode
v = 'DaEcB' """ Case sensitive sort """ print(''.join(sorted(v))) # BDEac  """ Case insensitive sort """ print(''.join(sorted(v, key=str.upper))) print(''.join(sorted(v, key=str.lower))) # aBcDE 
Enter fullscreen mode Exit fullscreen mode

<Bytes & Bytearray>:

bytes:

v = b'DAECB' print(sorted(v)) # [65, 66, 67, 68, 69]  print(bytes(sorted(v))) # b'ABCDE'  print(bytes(sorted(v, reverse=True))) # b'EDCBA' 
Enter fullscreen mode Exit fullscreen mode
v = b'DaEcB' def upper(b): return chr(b).upper() def lower(b): return chr(b).upper() """ Case sensitive sort """ print(bytes(sorted(v))) # b'BDEac'  """ Case insensitive sort """ print(bytes(sorted(v, key=upper))) print(bytes(sorted(v, key=lower))) # b'ABCDE' 
Enter fullscreen mode Exit fullscreen mode

bytearray:

v = bytearray(b'DAECB') print(sorted(v)) # [65, 66, 67, 68, 69]  print(bytearray(sorted(v))) # bytearray(b'ABCDE')  print(bytearray(sorted(v, reverse=True))) # bytearray(b'EDCBA') 
Enter fullscreen mode Exit fullscreen mode
v = bytearray(b'DaEcB') def upper(b): return chr(b).upper() def lower(b): return chr(b).upper() """ Case sensitive sort """ print(bytearray(sorted(v))) # bytearray(b'BDEac')  """ Case insensitive sort """ print(bytearray(sorted(v, key=upper))) print(bytearray(sorted(v, key=lower))) # bytearray(b'aBcDE') 
Enter fullscreen mode Exit fullscreen mode

reversed() can return the iterator which has the reversed characters of a string and the reversed bytes of a bytes and bytearray, then the iterator is converted to a string, bytes and bytearray with join(), bytes() and bytearray() respectively as shown below:

*Memo:

  • The 1st argument is seq(Required-Type:Sequence):
    • Don't use seq=.

<String>:

v = 'DAECB' print(reversed(v)) # <reversed object at 0x000001F3B9D83C10>  print(''.join(reversed(v))) # BCEAD 
Enter fullscreen mode Exit fullscreen mode

<Bytes & Bytearray>:

bytes:

v = b'DAECB' print(bytes(reversed(v))) # b'BCEAD' 
Enter fullscreen mode Exit fullscreen mode

bytearray:

v = bytearray(b'DAECB') print(bytearray(reversed(v))) # bytearray(b'BCEAD') 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)