the statement is awesome but there are bugs in the code of method 2
def qsort(L):
return (qsort([y for y in L[1:] if y < L[0]]) +
L[:1] +
[y for y in L[1:] if y == L[0] + qsort([y for y in L[1:] if y > L[0]]) ) \
if len(L) > 1 else L
'[' does not appear in pairs.
maybe you need a ']' after if y == L[0] in line 4.