将列表转换为参数元组[重复]
Posted
技术标签:
【中文标题】将列表转换为参数元组[重复]【英文标题】:Turn a list into a tuple of arguments [duplicate] 【发布时间】:2016-09-20 23:53:06 【问题描述】:Python itertools.product()
采用逗号分隔的一维列表并返回一个产品。我有一个表格中数字的除数列表
l=[[1, a1**1,a1**2,..a1**b1],[1,a2**1,..a2**b2],..[1, an**1, an**2,..an**bn]]
当我将它作为参数传递给 itertools.product() 时,我没有得到想要的结果。如何将这个整数列表提供给 product()?
import itertools
print([list(x) for x in itertools.product([1,2,4],[1,3])])
# [[1, 1], [1, 3], [2, 1], [2, 3], [4, 1], [4, 3]] #desired
l1=[1,2,4],[1,3] #doesn't work
print([list(x) for x in itertools.product(l1)])
#[[[1, 2, 4]], [[1, 3]]]
l2=[[1,2,4],[1,3]] #doesn't work
print([list(x) for x in itertools.product(l2)])
#[[[1, 2, 4]], [[1, 3]]]
【问题讨论】:
请分享您输入的所需输出,即l2=[[1,2,4],[1,3]
另外,你想要两个列表的笛卡尔积吗?因为这就是itertools.product()
所做的事情
在给定 n 的主要因素的情况下,我想要列出 n
的所有除数。
【参考方案1】:
您需要在product()
中使用*l2
,因为*
会展开列表。在这种情况下,*[[1,2,4],[1,3]]
的值将是 [1,2,4],[1,3]
。这是你的代码:
l2 = [[1,2,4],[1,3]]
print([list(x) for x in itertools.product(*l2)])
# Output: [[1, 1], [1, 3], [2, 1], [2, 3], [4, 1], [4, 3]]
请查看:What does asterisk mean in python。另请阅读有关*args
和**kwargs
的信息,您可能会发现它很有用。检查:*args and **kwargs in python explained
【讨论】:
这是什么*
?我想了解更多。像魅力一样工作。
检查这个:pythontips.com/2013/08/04/args-and-kwargs-in-python-explained 并添加其他人的答案
准确来说,你需要知道:***.com/questions/400739/…
感谢您的代表并致以最良好的祝愿
@sixtytrees : 谢谢 :)以上是关于将列表转换为参数元组[重复]的主要内容,如果未能解决你的问题,请参考以下文章