簡體   English   中英

將包含整數的元組解包到列表中

[英]Unpacking a tuple containing integers to a list

我正在嘗試使用包含整數的元組創建單個列表

輸入示例:

test1((1, 2, 3), 2, 3)

test2((5, -5), 10, 3)

test3((10.2, -2.2, 0, 1.1, 0.5), 12.4, 3)

我嘗試以各種方式遍歷元組,但得到一個“int() 不是可迭代的錯誤”。 我試圖為輸入分配變量,但得到一個“'類型'對象不可下標”錯誤。

我現在已經多次重寫腳本並且沒有保存以前的嘗試。 我在這里找到的解包方法不起作用,因為它們要求我遍歷輸入,而我不能這樣做(或弄清楚如何)。 b = [i for sub in args for i in sub]list(chain.from_iterable(args)等沒有工作。

這是我現在所擁有的

def checkio(*args):
    ab, cd, ef = args
    print (ab)
    empty = []
    empty.append(cd)
    empty.append(ef)
    for i in ab:
        empty.append(i)
    print (empty)

有點亂。 我對python很陌生,所以我確定解決方案非常簡單

如果您的輸入與您的樣本一樣有規律,那么答案很簡單; 通過連接創建一個新元組:

def checkio(ab, cd, ef):
    return ab + (cd, ef)

這將一個帶有(cd, ef)ab組連接到現有的ab元組。

對於不同的模式,您需要測試這些值; 如果你得到的只是元組或整數,並且元組不是嵌套的,那么就很簡單:

def checkio(*args):
    result = []
    for value in args:
        if isinstante(value, tuple):
            result += value
        else:
            result.append(value)
    return tuple(result)

你可以用遞歸來對抗遞歸; 如果元組可以包含其他元組,請使用遞歸函數將它們展平:

def checkio(*args):
    result = []
    for value in args:
        if isinstante(value, tuple):
            result += checkio(*value)
        else:
            result.append(value)
    return tuple(result)

如果模式總是元組,可以是 2 之一:

  • 元組
  • 數字

您可以執行以下更通用的解決方案:

my_tuple = ((10.2, -2.2, 0, 1.1, 0.5), 12.4, 3)
my_list = []
for v in my_tuple:
    if isinstance(v, tuple):
        my_list.extend += v
    else:
        my_list.append(v)

print my_list

輸出:

[10.2, -2.2, 0, 1.1, 0.5, 12.4, 3]

這是一個模式問題以及你的數據是如何結構的。

你有沒有試過這個:

a = (1,2,3)
b = [*a]
print(b)

它將元組轉換為列表。 或者簡單地print(*a)

暫無
暫無

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

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