簡體   English   中英

Python 中是否有某種方法可以讓特定的代碼行繼續到下一個?

[英]Is there some way in Python where you can have a specific line of code continuing to the next?

random_words = random.choice(str1) + '' + random.choice(str2) + '' + random.choice(str3) + '' + random.choice(str4) + '' + random.choice(str5) + ''

所以基本上我有大約 27 個名為 str1、str2、str3 等的列表,等等,它們都有單詞的元素。 使用 random.choice() 我從每個列表中選擇一個隨機單詞並將它們組合成一組隨機單詞。 盡管我遇到的問題是,自從我為 27 個單詞列表執行此操作以來,該特定代碼行將持續多長時間。 所以我的問題是,在 Python 中是否有某種方式可以讓特定的代碼行繼續到下一個? 我知道這聽起來像是一個愚蠢的問題,哈哈,但這對我來說經常發生,所以我只是想知道這是否是一回事。 另外,如果不是(可能不是大聲笑),是否有某種方法可以使我不那么久? 我想我可以組合 5 個列表,然后再組合 5 個,最后將它們全部加在一起。

如果將表達式括在括號中,則可以繼續行。 所以上面會變成:

import random

random_words = (
    random.choice(str1) + '' +
    random.choice(str2) + '' +
    random.choice(str3) + '' +
    # and so on...
)

如果我誤解了你的問題,請告訴我。

首先,把你的 27 個列表做成一個列表。 理想情況下,您只需預先以這種方式創建它們,但我將假設您只有 27 個列表作為 27 個不同的變量(yech)並且無法控制它。 沒關系; 您可以制作自己的列表,這樣更易於管理。

word_lists = [
    str1, str2, str3, str4, str5, str6, str7, str8, str9,
    str10, str11, str12, str13, str14, str15, str16, str17, str18,
    str19, str20, str21, str22, str23, str24, str25, str26, str27,
]

請注意,您可以將其拆分為多行,因為它位於方括號內; Python 允許您在下一行繼續表達式,只要您有一組開放的括號、圓括號或大括號。

這樣做一次后,您將不再需要將所有這些變量放在一個表達式中,這意味着您無需擔心超長的代碼行。

原因如下:現在我們將所有內容都放在一個列表中,我們可以在非常短的迭代中構建我們的random_words ,而不必再次復制和粘貼 27 個不同的變量名:

random_words = ''.join(random.choice(words) for words in word_lists)

每個 pyhton 編碼器都應該知道PEP-8 對您來說關鍵部分是:

對於結構限制較少的長文本塊(文檔字符串或注釋),行長應限制為 72 個字符。
[...]
包裝長行的首選方法是在括號、方括號和大括號內使用 Python 的隱含行繼續。 通過將表達式括在括號中,可以將長行分成多行。 這些應該優先使用反斜杠來繼續行。

以及繼續使用\作為行的最后一個字符,包括如何以及何時斷行以及如何在斷行時繼續行,如

反斜杠有時可能仍然合適。 例如,長的、多個 with 語句不能使用隱式延續,所以反斜杠是可以接受的:

 with open('/path/to/some/file/you/want/to/read') as file_1, \ open('/path/to/some/file/being/written', 'w') as file_2: file_2.write(file_1.read())

確保全部閱讀——即使是分段閱讀——因為它包含許多有價值的信息,如何在 python 中格式化代碼。

看你可以選擇艱難的方式,也可以選擇聰明的方式,

exec() function 用於動態執行 Python 程序,它可以是字符串或 object 代碼。

這就是我會做的

random_words = ''
for i in range(1,27):
    exec(f'random_words += random.choice(str{i}) + \' \'')

資源

暫無
暫無

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

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