Widziałem niektóre kodu wczoraj w this question że nie widziałem wcześniej, ten wiersz w szczególności:Jakieś dobre wykorzystanie do przypisania listy/dict podczas pętli for?
for xyz[num] in possible[num]:
...
Więc jak działa ta pętla, elementy z possible[num]
są przypisane do listy xyz
w pozycji num
. Byłem bardzo zdezorientowany to więc zrobiłem kilka testów, a tu jest jakiś odpowiednik kod, który jest nieco bardziej wyraźne:
for value in possible[num]:
xyz[num] = value
...
pewno zamierzają zawsze używać tego drugiego formatu, ponieważ uważam, że pierwsze bardziej skomplikowane niż to jest warta, ale byłem ciekawy ... więc:
Czy jest jakiś dobry powód, aby użyć tej "cechy", a jeśli nie, to dlaczego jest ona dozwolona?
Oto kilka głupich przypadków użycia, które wymyśliłem (głupie, ponieważ istnieje wiele lepszych sposobów na zrobienie tego samego), pierwsze dotyczy obracania liter alfabetu o 13 pozycji, a drugie jest do tworzenia słownika, który odwzorowuje postacie z rot13 do postaci 13 oddalonej.
>>> import string
>>> rot13 = [None]*26
>>> for i, rot13[i%26] in enumerate(string.ascii_lowercase, 13): pass
...
>>> ''.join(rot13)
'nopqrstuvwxyzabcdefghijklm'
>>> rot13_dict = {}
>>> for k, rot13_dict[k] in zip(rot13, string.ascii_lowercase): pass
...
>>> print json.dumps(rot13_dict, sort_keys=True)
{"a": "n", "b": "o", "c": "p", "d": "q", "e": "r", "f": "s", "g": "t", "h": "u", "i": "v", "j": "w", "k": "x", "l": "y", "m": "z", "n": "a", "o": "b", "p": "c", "q": "d", "r": "e", "s": "f", "t": "g", "u": "h", "v": "i", "w": "j", "x": "k", "y": "l", "z": "m"}
Myślę, że źle zrozumiałeś kod. "num' ma tam ustaloną wartość. Twoje przykłady są bardziej skomplikowane ... –
Może to jest przydatne dla kodegolf :) –
@gnibbler można transponować macierzy w miejscu za pomocą tego? –