Komplexes Listenverständnis - Ein LinerPython

Python-Programme
Guest
 Komplexes Listenverständnis - Ein Liner

Post by Guest »

Ich habe versucht, einen Einzeiler zu erstellen, um dies auszudrucken ("Die nicht perfekte Liste sicherer Zeichen für Dateinamen in den meisten Betriebssystemen"): < /p>

Code: Select all

$ python ./z.py
+,-.
0123456789
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_
abcdefghijklmnopqrstuvwxyz{}~
< /code>
...But haben keinen Weg gefunden, dies zu tun; Musste stattdessen ein kurzes Skript erstellen < /p>
Mein letzter Ein-Liner-Versuch: < /p>
$ python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"
Traceback (most recent call last):
File "", line 1, in 
TypeError: unsupported operand type(s) for &: 'range' and 'int'
Die obige Ausgabe, die von Z.py erstellt wurde, enthält:

Code: Select all

#!/bin/env python

# copy of the one-liner
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print( [ chr(c) if (c & 0xdf)!=0x5c else '' for c in [ range(a,b) for a,b in [ li for li in lst ] ] ] )"

# attempt to break down of the above
# python -c "lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ];print(
# [ chr(c) if (c & 0xdf)!=0x5c else '' for c in
#   [ range(a,b) for a,b in
#     [ li for li in lst ]
#   ]
# ]
# )"

# working code to create the output
lst= [ [0x2b,0x2e+1],[0x30,0x39+1],[0x40,0x5f+1],[0x61,0x7f+1] ]

for li in lst:
a,b=li
for c in range(a,b):
z=(c & 0xdf)
if z != 0x5c:
print(chr(c), end='')
print()
Wo ist das Problem mit dem einen Liner. Können Sie genau bestimmen, wie es geht?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post