将列表转换为参数元组[重复]

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 : 谢谢 :)

以上是关于将列表转换为参数元组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数据框转换为元组列表[重复]

使用python将csv文件转换为元组列表

Python基础(3) - 去掉列表或元组中的重复元素

将有序元组列表保存为 CSV [重复]

在Python中将列表转换为元组[重复]

将元组列表的字典转换为数据框