python差集
❶ python兩個列表(或集合、字典)進行比較,如果一個列表中的幾位在另一個列表中出現,則刪除這些項
#coding=utf-8
#py2.7
test1 = ['a1', 'b2']
test2 = ['a1_001', 'a1_002', 'a1_003', 'a2_001', 'a3_001', 'b2_001']
print filter(lambda x:x[:2] not in test1,test2)
#我是按照你給的例子來寫的代碼,這樣只循環了 test2長度的次數
#「現在兩組數據長度不一樣」,不太明白這句話對於你的邏輯有啥影響
❷ python如何將2個for循環的數變集合並求其補集
setA = set(fib(i+1) for i in range(a))
setB = set(fib(i+1) for i in range(b))
setC = setA | setB
setAcomp = setC - setA
setBcomp = setC - setB
print(setAcomp)
print(setBcomp)
❸ 關於 python set 列表 差集的問題。
從源代碼看在set中增加一個元素,就可以看出set是根據hash表來索引數據,每個元素都計算出一個long類型的hash值。
另外一個優化就是內存分配:set_table_resize
每次增加元素時,如果原來分配數不夠,就一次增加一批,而不是一個一個增加。
static int set_add_key(register PySetObject *so, PyObject *key)
{
register long hash;
register Py_ssize_t n_used;
if (!PyString_CheckExact(key) ||
(hash = ((PyStringObject *) key)->ob_shash) == -1) {
hash = PyObject_Hash(key);
if (hash == -1)
return -1;
}
assert(so->fill <= so->mask); /* at least one empty slot */
n_used = so->used;
Py_INCREF(key); //插入元素引用+1
if (set_insert_key(so, key, hash) == -1) {
Py_DECREF(key);
return -1;
}
if (!(so->used > n_used && so->fill*3 >= (so->mask+1)*2))
return 0;
return set_table_resize(so, so->used>50000 ? so->used*2 : so->used*4);
}
static int set_insert_key(register PySetObject *so, PyObject *key, long hash)
{
register setentry *entry;
typedef setentry *(*lookupfunc)(PySetObject *, PyObject *, long);
assert(so->lookup != NULL);
entry = so->lookup(so, key, hash); //這里根據hash值來查找元素
if (entry == NULL)
return -1;
if (entry->key == NULL) {
/* UNUSED */
so->fill++;
entry->key = key;
entry->hash = hash;
so->used++;
} else if (entry->key == mmy) {
/* DUMMY */
entry->key = key;
entry->hash = hash;
so->used++;
Py_DECREF(mmy);
} else {
/* ACTIVE */
Py_DECREF(key);
}
return 0;
}
❹ Python中set集合中的remove和discard
歷史原因不知道。
比如discard是remove的改進版呢?
discard沒有報錯可以不引起程序的報錯。
remove會報錯,可以用try catch抓報錯,然後可以觸發自定義事件,而discard就不能觸發了,因為返回了默認值。(當然想達到辦法都是有的)
❺ python 里的差集,交集,並集是什麼意思
這是 set的用法
首先set是集合,集合是無序不重復的
t=set([1,2,3,4,5])
s=set([5,6,7,8,9])
並集:
a = t | s # t 和 s的並集,計算的是t和s加在一起有多少不重復的元素,根據上面的例子,a就是一個包含1、2、3、4、5、6、7、8、9這九個元素的集合
交集:
b = t & s # t 和 s的交集,計算的是t和s有多少共同擁有不重復的元素,根據上面的例子,a就是一個包含5這一個元素的集合
差集:
c = t - s # 求差集(項在t中,但不在s中),根據上面的例子,a就是一個包含1、2、3、4這四個元素的集合
❻ Python有兩個列表,a和b,怎樣列印出b相對a列表,b中少了哪些元素以及與a不相同的元素
這表達能力也是堪憂。。
b相對a少了的元素。。。b中相對a來說不相同的元素。。回。
總結出來,就是答不要a與b都有的元素。。。
集合上說,就是 a與b的並集 「減去」a與b的交集,當然這里說的減去,是指差集
代碼就是
(set(a) | set(b) ) - (set(a) & set(b))
❼ numpy 兩個一維數組的差集
>>> a = np.array([1, 2, 3, 2, 4, 1])
>>> b = np.array([3, 4, 5, 6])
>>> np.setdiff1d(a, b)
array([1, 2])
❽ python怎麼求兩個集合set的差集
這個復是python官方的中文教程制
有最新的3.4.3版本的
也可以選擇中英對照
基本的東西都講述的差不多了
如果想了解更多庫或模塊
知乎上大神很多
隨便找一找都能找到很多有用的建議
但是建議不要初期就看過多虛的比較和互撕神馬的
官方的idle用好了之...
❾ 關於python集合運算
差集 a-b 從集合a中去除所有在集合b中出現的元素集合
並集 a|b 集合a,b中所有不重復的元素集合
交集 a&b 集合a,b中均出現的元素集合
如 a={1,2,3,4} b={2,4,6,8} a集合中減去b中出現的2,4 a-b為{1,3}
a|b 為 {1,2,3,4,6,8} a&b為 a ,b中均出現的{2,4}
❿ python二維數組怎麼求交集
本文實例講述了python獲得兩個數組交集、並集、差集的房部分。分享給大家供大家參考。具體如下:
1. 獲取兩個list 的交集
#方法一:
a=[2,3,4,5]
b=[2,5,8]
tmp = [val for val in a if val in b]
print tmp
#[2, 5]
#方法二
print list(set(a).intersection(set(b)))
2. 獲取兩個list 的並集
print list(set(a).union(set(b)))
3. 獲取兩個 list 的差集
print list(set(b).difference(set(a))) # b中有而a中沒有的
通過以上方法,就能處理python list 的交集,並集,差集了。