import itertools as iter
numbers = ['0', '1']
y = list(iter.product(numbers, repeat=2))
a = ''.join(y)
print(a)
當我嘗試將 y 轉換為字串時,我將字串 'a' 與 y 連接起來。但我不斷收到錯誤“TypeError:序列項 0:預期的 str 實體,找到元組”
有什么解決辦法嗎?
uj5u.com熱心網友回復:
在您的示例中,y是一個元組串列,每個元組包含兩個單字符字串。
如果我理解,我認為您想要做的是:
import itertools as it
numbers = ['0', '1']
y = list(it.product(numbers, repeat=2))
a = ''.join(''.join(x) for x in y)
print(a)
輸出:
00011011
chain()使用itertools 中的函式產生相同結果的替代方法是:
import itertools as it
numbers = ['0', '1']
y = list(it.product(numbers, repeat=2))
a = ''.join(it.chain(*y))
print(a)
uj5u.com熱心網友回復:
我不確定您要尋找什么輸出,如果您要使用itertools我會保持樣式功能:
import itertools
from functools import reduce
numbers = ['0', '1']
y = itertools.product(numbers, repeat=2)
y = map(lambda x: ''.join(x), y)
y = reduce(lambda x, z: x z, y)
print(y)
uj5u.com熱心網友回復:
您的問題是itertools.product回傳元組的迭代器,因此您必須對該串列中的join 每個值:
import itertools
numbers = ['0', '1']
y = itertools.product(numbers, repeat=2)
# output of product
# <iterator>(('0', '0'), ('0', '1'), ('1', '0'), ('1', '1'))
a = [''.join(t) for t in y]
a
# ['00', '01', '10', '11']
請注意,您無需轉換y為串列即可在理解中使用它。
如果你想把它變成一個字串,你可以join再次:
''.join(a)
# 00011011
或作為一項操作
a = ''.join(''.join(t) for t in y)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488822.html
