題目要求:實現兩個列表的交並補差運算
參考高中集合知識可知:
(均以a,b集合為例)
集合特點:無序,互異,確定
交集:兩個集合的公共元素組成的集合 記作:a∩b
並集:包含兩個集合的所有元素的集合 記作:a∪b
補集:a是b的乙個子集,由b中所有不屬於a的元素組成的集合,叫做子集a在b中的補集 記作:cba
差集:(a - b) a中不含b中所有元素的集合
思路:(list1,list2)
1列表交集(intersect):兩個列表中所有的公共元素所組成的列表,一一比對即可
2列表並集(union):先求出兩個列表的公共部分list3,然後再將list1,list2中不在list3中的元素加入list3
3補集(complementary):首先判斷是否能進行運算;然後在判斷誰求誰的補集
4差集(dif):dif = complementary ( list1,intersect( list1, list2 ) )
實現**:
# 寫出列表的交,補,並,差集
# 求兩個列表的交集 返回乙個列表
defintersect
(list1, list2)
: intersectlist =
for i in list1:
for j in list2:
if i == j:
break
intersectlist.sort(
)return intersectlist
# 求兩個列表的並集
defunion
(list1, list2)
: list_sect = intersect(list1, list2)
# 先求兩個列表的交集
list_union =
# 初始化乙個list_union
for num in list_sect:
# 將交集中所有元素放入list_union列表
for i in list1:
if i in list_sect:
continue
else
:for i in list2:
if i in list_sect:
continue
else
: list_union.sort(
)return list_union
# 求兩列表的補集
defcomplementary
(list1, list2)
: comple =
list_intect = intersect(list1, list2)
# 取交集
if list_intect != list1 and list_intect != list2:
# 交集不等於任何乙個集合
return
'不存在包含與被包含關係'
elif list_intect == list1:
# 交集等於list1
for num in list2:
if num in list_intect:
continue
else
:return comple
else
:return complementary(list2, list1)
# 求兩個集合的差集a - b = comple(a,intersect(a,b))
defdif
(list1, list2)
:return complementary(list1, intersect(list1, list2)
)listunion = union([1
,2,3
,4],
[2,3
,4,5
])listintersect = intersect([1
,2,3
,4],
[2,3
,4,5
])listcomple = complementary([1
,2,3
,4],
[1,2
,3,4
,5])
list_dif = dif([1
,2,3
,4,7
],[1
,2,3
,4,5
])print
(listunion, listintersect, listcomple, list_dif)
python列表的交 並 差集
list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函式 sorted 方法返回的是乙個新的 list,而不是在原來的基礎上進行的操作 a.sort reverse true b sorted a,reverse false usr bin env python3 l1 1 2 3 ...
mysql交並補 集合交並補運算順序是什麼
我剛剛查完集合運算順序和邏輯運算順序,按照我的理解,順便來回答一下!我的提問 集合的交並補運算子沒有優先順序順序,運算順序完全由括號決定。邏輯與或非才有優先順序順序 邏輯非 邏輯與 邏輯或。以下內容來自維基百科 交換律a交b b交a a並b b並a 結合律 a交b 交 c a 交 b交c a並b 並...
SQLServer資料集合的交 並 差集運算
sqlserver2005通過intersect,union,except和三個關鍵字對應交 並 差三種集合運算。他們的對應關係可以參考下面圖示 求表並集12 345 select from t1union allselect from t2go 求表並集不過濾重複12 3345 select fr...