python - 通过比较python中的现有列表并导出到excel来创建列表
问题描述
我正在处理 python 脚本,尝试通过以下方式创建带有列的 excel 文件:
只有一个
仅限 b
仅限 c
a 和 b 但不在 c 中
b 和 c 但不在 a
c 和 a 但不在 b 中
a 和 b 和 c。
输出看起来像一个 3 组维恩图,但我需要在列表中,然后我可以导出到 Excel 电子表格。
list1 = ['ab','cd','gfa','eha','tu','asb','acd','cgf','ceh','dtu','ased','ra','re','sdgfsycbjs','jcjhcbsd']
list2 = ['abx','cd','gfr','eha','tu','asb','acl','cgfta','cpah','adtu','assa','fd','as','sbddsvc','jbcbh']
list3 = ['abs','cd','gfv','eh','tu','asb','ased','cgf','ceh','adtu','assa','qw','uy','hdsjb','bcjh']
a = []
b = []
c = []
ab = []
bc = []
ca = []
abc = []
for item in list1:
if item in list2:
if item in list3:
if item not in abc:
abc.append(item)
else:
ab.append(item)
else:
if item not in ca:
a.append(item)
for item in list2:
if item in list3:
if item in list1:
if item not in abc:
abc.append(item)
else:
bc.append(item)
else:
if item not in ab:
b.append(item)
for item in list3:
if item in list1:
if item in list2:
if item not in abc:
abc.append(item)
else:
ca.append(item)
else:
if item not in bc:
c.append(item)
解决方案
你想要的是set
s,而不是列表。他们很好地支持这类操作。要创建集合,要么调用set(xs)
list xs
,要么使用类似的集合文字{'a', 'b', ... }
(而不是使用方括号的类似列表文字)。
使用这些套装,您可以执行以下操作
foo = {'a', 'b'}
bar = {'b', 'c', 'd'}
foo.difference(bar) # returns {'a'}
foo.union(bar) # returns {'a', 'b', 'c', 'd'}
foo.intersection(bar) # returns {'b'}
foo.symmetric_difference(bar) # returns {'a', 'c', 'd'}
...
list(foo)
您还可以通过调用或类似方式转换回列表。使用这些工具,您可以轻松构建所需的维恩图。请注意,所有这些函数都返回新集合,从不修改原始集合。
推荐阅读
- excel - 如何在 Excel 中嵌入 PDF 而不是作为图标?
- php - laravel ColumnDefinition 类中的方法在哪里实现?
- javascript - 如何使用scrollmagic和Gsap并排使用水平和垂直滚动
- swift - 从图像资产中获取数据
- audio - 使用峰到 RMS 检测的音频噪声测量
- mysql - 如何使用 MySQL 中的连接从另一个表更新一个表?
- java - 有没有办法在mapbox中绘制半径以米为单位的圆?
- grails - 以 Grails 方式在 Micronaut 中使用 GORM
- javascript - 试图在另一个之前插入另一个 span 标签
- javascript - 无法读取未定义的内部承诺的属性“数据”。在一个非常奇怪的地方