Jestem początkującym użytkownikiem Pythona, a ja bawiłem się z funkcjami lambda. Pisałem program wykorzystujący funkcję lambda do drukowania znaków, które są +1 wartością ascii wprowadzanych znaków. Mój kod to:Funkcja drukowania lambda <funkcja <lambda> przy 0x7fcbbc740668> zamiast wartości
#!/usr/bin/python
import sys
try:
word = sys.argv[1]
except:
print "No arguments passed"
sys.exit(1)
def convert_ascii(char):
return "".join(chr(ord(char) + 1))
for i in word:
print convert_ascii(i)
print lambda x: chr(ord(i) + 1)
Mam funkcję convert_ascii, która robi to samo co lambda. Jednak moja wydajność to:
/usr/bin/python2.7 /home/user1/PycharmProjects/test/Tut1/asciipl2.py "abc def ghi"
b
<function <lambda> at 0x7f0310160668>
c
<function <lambda> at 0x7f0310160668>
d
<function <lambda> at 0x7f0310160668>
!
<function <lambda> at 0x7f0310160668>
e
<function <lambda> at 0x7f0310160668>
f
<function <lambda> at 0x7f0310160668>
g
<function <lambda> at 0x7f0310160668>
!
<function <lambda> at 0x7f0310160668>
h
<function <lambda> at 0x7f0310160668>
i
<function <lambda> at 0x7f0310160668>
j
<function <lambda> at 0x7f0310160668>
Celem tego skryptu jest nauka lambda, chociaż istnieją inne sposoby na wykonanie tego programu. Daj mi znać, co robię źle. Proces zakończony kodem wyjściowym 0
Chociaż fo zauważ, że w tym przypadku Lambda jest bezużyteczna. Kod w tej odpowiedzi jest równoważny 'print (chr (ord (x) + 1))' – Atsch
Założonym celem PO jest nauczenie się działania wyrażeń lambda. Gdzie jest * właściwe * ich użycie jest nie na temat dla tego konkretnego pytania. – chepner
Chociaż użyłem i zamiast x w funkcjach lambda, wynik był taki sam. W lambda, zaakceptowałem var jako x, ale iterowałem jako i, i nadal działało. Każdy pomysł, dlaczego? – pkill