Jestem nowy w Pythonie, pochodzę z Java i C. Jak mogę zwiększyć liczbę znaków? W Javie lub C znaki i int są praktycznie wymienne, aw niektórych pętlach bardzo przydatne jest dla mnie możliwość inkrementacji znaków i indeksowania tablic według znaków.
Jak mogę to zrobić w Pythonie? Wystarczająco źle jest brak tradycyjnego pętli for (;;) - czy jest jakiś sposób, aby osiągnąć to, co chcę, bez konieczności ponownego przemyślenia całej strategii?
for
pętla:for i in range(50): do_something_with(i)
. No dalej, to nie jest takie złe !![''.join(i) for i in itertools.product(string.ascii_lowercase, repeat=2)]
Odpowiedzi:
W Pythonie 2.x wystarczy użyć funkcji
ord
ichr
:Python 3.x sprawia, że jest to bardziej zorganizowane i interesujące ze względu na wyraźne rozróżnienie między bajtami i Unicode. Domyślnie „string” to unicode, więc powyższe działa (
ord
odbiera znaki Unicode ichr
tworzy je).Ale jeśli interesują Cię bajty (na przykład do przetwarzania strumienia danych binarnych), sprawa jest jeszcze prostsza:
źródło
„wystarczająco źle, że nie ma tradycyjnego (;;) looper” ?? Co?
Próbujesz to zrobić
A może używasz
string.uppercase
lubstring.letters
?Python nie ma,
for(;;)
ponieważ często istnieją lepsze sposoby na zrobienie tego. Nie ma również matematyki postaci, ponieważ nie jest to konieczne.źródło
Pochodzę z PHP, gdzie można inkrementować znaki (A do B, Z do AA, AA do AB itp.) Za pomocą operatora ++. Zrobiłem prostą funkcję, która robi to samo w Pythonie. Możesz także zmienić listę znaków na dowolną (małe, duże, itp.), Której potrzebujesz.
źródło
Istnieje sposób na zwiększenie znaku za pomocą
ascii_letters
fromstring
package, któryascii_letters
jest ciągiem zawierającym cały angielski alfabet, wielkie i małe litery:Można to również zrobić ręcznie;
źródło
Sprawdź to: UŻYWANIE PĘTLI
for a in range(5): x='A' val=chr(ord(x)+a) print(val)
WYDAJNOŚĆ: ABCBDE
źródło
wynik:
źródło