簡體   English   中英

python 3.7中的“” .join()在def中不起作用

[英]“”.join() in python 3.7 not working inside def

我正在嘗試使用功能生成唯一的密碼。 除了"".join之外,其他一切都正常。 幫我看看代碼中的問題是什么? 使用Python 3.7。

我的代碼:

import random
import string


def password():
    a = []
    letters = string.ascii_letters
    symbols = string.punctuation
    for element in range(6):
        a.append(random.randint(0, 10))
        a.append(random.choice(letters))
        a.append(random.choice(symbols))
    random.shuffle(a)
    print(''.join(str(a)))


password()

當您通過str(a)調用join ,您首先將列表轉換為字符串,然后通過字符串列表中的每個字符進行連接。

你想要做什么,而不是在轉換每個元素 a為字符串。 您應該使用生成器表達式 ,如下所示:

''.join(str(x) for x in a)

另外,您可以使用內置函數map(function, iterable) ,在通常情況下,當您要返回一個新的iterable,其中包含應用於iterable每個元素的function結果時,該函數很有用。 因此,您將使用:

''.join(map(str, a))

基本上,您會發現它更具可讀性,這是一個品味問題。

您使用一個空字符串作為連接分隔符,它什么也不做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM