Pochodzę ze świata C/C++ i jako newb Pythona, napisałem tę prostą funkcję łańcuchową, która pobiera ciąg wejściowy (gwarantowany jako ASCII) i zwraca ostatnie cztery znaki. Jeśli jest mniej niż cztery znaki, chcę wypełnić pozycje wiodące literą "A". (nie było to ćwiczenie, ale cenna część innej złożonej funkcji).Jak wykonać tę prostą funkcję ciągów "pythonic"
Istnieje wiele metod tego, od brutalnej siły, do prostych, po eleganckie. Moje podejście poniżej, choć funkcjonalne, nie wydawało się "Pythoniczne".
UWAGA: Aktualnie używam Pythona 2.6 - a wydajność NIE jest problemem. Ciągi wejściowe są krótkie (2-8 znaków), a tę funkcję nazywam tylko kilka tysięcy razy.
def copyFourTrailingChars(src_str):
four_char_array = bytearray("AAAA")
xfrPos = 4
for x in src_str[::-1]:
xfrPos -= 1
four_char_array[xfrPos] = x
if xfrPos == 0:
break
return str(four_char_array)
input_str = "7654321"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))
input_str = "21"
print("The output of {0} is {1}".format(input_str, copyFourTrailingChars(input_str)))
Wyjście jest:
The output of 7654321 is 4321
The output of 21 is AA21
Propozycje od Pythoneers?
pięknie wykonane :) – The6thSense
@VigneshKalai - Wow! To jest niesamowite! Pewnie, że się cieszę, że zapytałem! – SMGreenfield
@SMGreenfield Nie odpowiedziałem, że to anand s kumar :) – The6thSense