![](/img/trans.png)
[英]Is it possible in Python to make a one-liner with multiple IF and OR after RETURN statement?
[英]How to make an One-Liner list with multiple variables in Python?
我很想知道是否可以在一行中定義ascii_combinations列表,而不使用下面示例中使用的循環...
ascii_printable = [chr(count) for count in range(32, 127)]
ascii_combinations = []
for x1 in ascii_printable:
for x2 in ascii_printable:
for x3 in ascii_printable:
ascii_combinations.append(x1 + x2 + x3)
我想使用95個單字符ASCII字符創建所有可能的3個字符長組合的列表。 我使用此代碼使其工作,但由於設法將ascii_printable縮短為One-Liner,因此我對是否可以對其他列表做同樣的事情很感興趣。
由於要創建笛卡爾積,因此標准方法是使用itertools.product
。
import itertools
ascii_printable = [chr(count) for count in range(32, 127)]
ascii_combinations = [x1+x2+x3 for x1, x2, x3 in itertools.product(ascii_printable, repeat=3)]
您可以將itertools.product
用作
from itertools import product
ascii_printable = [chr(count) for count in range(32, 127)]
ascii_combinations = [x1 + x2 + x3 for x1, x2, x3 in product(ascii_printable, repeat=3)]
另外chr(count) for count in range(32, 127)
也不如
from itertools import product
from string import printable
ascii_combinations = [x1 + x2 + x3 for x1, x2, x3 in product(printable[:-5], repeat=3)]
最后,理解力很好,但是有時候,就可迭代圖而言,恕我直言,因此
from itertools import product
from string import printable
list(map(''.join, product(printable[:-5], repeat=3)))
結果為True:
ascii_printable = [chr(count) for count in range(32, 127)]
ascii_combinations = []
for x1 in ascii_printable:
for x2 in ascii_printable:
for x3 in ascii_printable:
ascii_combinations.append(x1 + x2 + x3)
test = [x1+x2+x3 for x1 in ascii_printable for x2 in ascii_printable for x3 in ascii_printable]
print(test == ascii_combinations)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.