Python 3.x 如何在python中创建组合?
我有一个.csv文件,布局如下Python 3.x 如何在python中创建组合?,python-3.x,Python 3.x,我有一个.csv文件,布局如下 X1,Y1 X2,Y1,Y2 X3,Y1,Y2,Y3 X4, X5,Y1 我期待这样的输出 X1,Y1 X2,Y1 X2,Y2 X3,Y1 X3,Y2 X3,Y3 X5,Y1 我有可能得到这样的结果吗? 或者有没有更容易完成这项工作的方法 昨天,我刚刚能够阅读CSV,我浏览了一下,获得了关于itertools排列和组合()的信息。我的库中没有itertools,我不知道如何安装它(我已经尽了最大努力) 导入csv 打开('list.csv')作为csvf
X1,Y1
X2,Y1,Y2
X3,Y1,Y2,Y3
X4,
X5,Y1
我期待这样的输出
X1,Y1X2,Y1
X2,Y2
X3,Y1
X3,Y2
X3,Y3
X5,Y1 我有可能得到这样的结果吗? 或者有没有更容易完成这项工作的方法 昨天,我刚刚能够阅读CSV,我浏览了一下,获得了关于itertools排列和组合()的信息。我的库中没有itertools,我不知道如何安装它(我已经尽了最大努力) 导入csv 打开('list.csv')作为csvfile: readCsv=csv.reader(csvfile,分隔符=';')
如果你把你的尝试和你的问题一起发布,会更好。无论如何,假设您已经读取了
.csv
文件,并以以下格式存储了数据:
data = [
['x1', 'y1'],
['x2', 'y1', 'y2'],
['x3', 'y1', 'y2', 'y3'],
['x4',],
['x5', 'y1'],
]
然后,您可以遍历数据中的每个子列表,并找到所有可能的组合。简单的解决方案:
res = []
for arr in data:
comb = []
for cell in arr[1:]:
if len(arr) > 1:
comb.append(arr[0] + ',' + cell)
if comb:
res.append(comb)
此外,您还可以用join()
替换arr[0]+'、'+cell
。
上述结果将是:
[['x1,y1'], ['x2,y1', 'x2,y2'], ['x3,y1', 'x3,y2', 'x3,y3'], ['x5,y1']]
如果您喜欢单线解决方案,则:
[[','.join((arr[0], cell)) for cell in arr[1:] if len(arr) > 1] for arr in data if len(arr) > 1]
输出将是相同的。可能有几种方法可以做到这一点。你试了哪个?发生了什么事?非常感谢安东尼的帮助,这对我这样的初学者来说是一个很大的帮助
[[','.join((arr[0], cell)) for cell in arr[1:] if len(arr) > 1] for arr in data if len(arr) > 1]