簡體   English   中英

如何動態分配未知數量的列表元素?

[英]How to dynamically assign an unknown number of list elements?

我有這個代碼,但它是 IF..ELIF..ELSE 的一個大功能塊。 有沒有辦法解包或動態分配兩個列表。 問題是,有時mylist的元素可能少於 4 個。

輸入:

mylist=['1','2','3','4']
flag=['a','b','c','d']

輸出:如果mylist只有 3 個元素,則為'a=1/b=2/c=3/d=4/''a=1/b=2/c=3/'類的字符串對象。

我目前的方法就像:

def myoutput(mylist, flag):
    if flag=='3':
        out = f'a={mylist[0]}/b={mylist[1]}/c={mylist[2]}/'
    else:
        out = f'a={mylist[0]}/b={mylist[1]}/c={mylist[2]}/d={mylist[3]}/'
    return out

我試圖壓縮這兩個列表,但我不知道接下來的步驟,它並沒有真正起作用:

tag_vars={}
for i in range((zip(mylist,flag))):
    tag_vars[f"mylist{i}"] = flag[i]

print(tag_vars)

我會按照以下方式使用zip來完成這項任務

mylist=['1','2','3','4']
flag=['a','b','c','d']
out = ''.join(f'{f}={m}/' for f,m in zip(flag,mylist))
print(out)

輸出

a=1/b=2/c=3/d=4/

請注意,我將 f,m 與 zip 一起使用,因此 f 和 m 是 flag 和 mylist 中的對應元素。 免責聲明:此解決方案假定 flag 和 mylist 始終具有相同的長度。

您可以像這樣使用zip

for a, b in zip(alist, blist): ...

我修改了myoutput函數以返回您想要的輸出

mylist=['1','2','3','4']
flag=['a','b','c','d']

def myoutput(mylist, flag):
    result = []
    for elem, f in zip(mylist, flag):
        result.append(f"{f}={elem}")
    return "/".join(result)

print(myoutput(mylist, flag)) # a=1/b=2/c=3/d=4
print(myoutput(mylist[:3], flag)) # a=1/b=2/c=3

暫無
暫無

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

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