亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Python 中動態創建變量?

如何在 Python 中動態創建變量?

qq_花開花謝_0 2022-07-12 18:03:51
我有以下字典和代碼,如果值的頭部和尾部相同,我想連接字典的值:    import random    dic={'1':[(1,2,4,3),(1,2,3,1)],'2':[(2,4,2,3),(2,6,5,3)],'3':[(3,5,9,1),(3,2,5,2),(3,7,8,1)]}    c1= (1,2,4,3)    c2=random.choice(dic[str(c1[-1])])    c3=random.choice(dic[str(c2[-1])])    c4=random.choice(dic[str(c3[-1])])    c5=random.choice(dic[str(c4[-1])])    print(c1,c2,c3,c4,c5)我得到這樣的結果: (1, 2, 4, 3) (3, 5, 9, 1) (1, 2, 4, 3) (3, 2, 5, 2) (2, 4, 2, 3) 字典將元組的第一個元素作為鍵,對于給定的c1,我使用c1作為鍵的最后一個元素從 中獲取隨機元組dic,通過這種方式,我得到c2, c3, c4, c5。我的問題是:我想編寫一個具有整數輸入的函數,可以是 10 或 20,所以我可以迭代地得到c10,c20而不是像現在我必須編寫c1, c2, c3, c4, c5, c6...簡單來說,如何動態創建變量>任何幫助,將不勝感激。
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

:=您可以使用Python 3.8 中的賦值表達式運算符通過列表推導來做到這一點。


>>> import random

>>> dic={'1':[(1,2,4,3),(1,2,3,1)],'2':[(2,4,2,3),(2,6,5,3)],'3':[(3,5,9,1),(3,2,5,2),(3,7,8,1)]}

>>> y = (1,2,4,3)

>>> n = 20

>>> [(y:=random.choice(dic[str(y[-1])])) for _ in range(n)]

[(3, 2, 5, 2), (2, 4, 2, 3), (3, 7, 8, 1), (1, 2, 4, 3), (3, 2, 5, 2), (2, 4, 2, 3), (3, 7, 8, 1), (1, 2, 4, 3), (3, 5, 9, 1), (1, 2, 3, 1), (1, 2, 3, 1), (1, 2, 3, 1), (1, 2, 4, 3), (3, 2, 5, 2), (2, 4, 2, 3), (3, 7, 8, 1), (1, 2, 3, 1), (1, 2, 3, 1), (1, 2, 3, 1), (1, 2, 4, 3)]

最初的選擇y并不重要,只要str(y[-1])是dic.


查看完整回答
反對 回復 2022-07-12
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

我認為使用遞歸是解決這個問題的好方法。


import random


def concatenator(dictionary, i, key=1):

    if i > 0:

        tuple_chosen = random.choice(dictionary[str(key)])

        next_key = tuple_chosen[-1]

        return str(tuple_chosen) + concatenator(dictionary, i-1, key=next_key)

    else:

        return ""

按如下方式使用此函數:(i 是您希望最后擁有的元組數)


dic = {'1': [(1,2,4,3),(1,2,3,1)],

       '2': [(2,4,2,3),(2,6,5,3)],

       '3': [(3,5,9,1),(3,2,5,2),(3,7,8,1)]}


concatenator(dic, 5)

# outputs: '(1, 2, 3, 1)(1, 2, 3, 1)(1, 2, 3, 1)(1, 2, 3, 1)(1, 2, 3, 1)'


查看完整回答
反對 回復 2022-07-12
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

到目前為止,我還沒有理解您的問題,我推斷您想要一種自動化的方式來動態創建變量,即擁有c<n>變量而無需自己輸入。


你有兩種方法:


Using exec: exec用于從代碼本身執行 Python 代碼。所以你可以嘗試這樣的事情:

inp = int(input('How many? ))

for i in range(inp):

    val = 20 # Enter the value here

    exec(f"c{i}=val")

但這不推薦


使用字典:字典是為此而生的,在這里很完美

inp = int(input("How many? "))

vals = {}

for i in range(inp):

    val = 10 # Value

    vals[f"c{i}"] = val # or simply vals[i]


查看完整回答
反對 回復 2022-07-12
  • 3 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號