1. python集合的使用怎麼樣的
Python set 集合最常用的操作是向集合中添加、刪除元素,以及集合之間做交集、並集、差集等運算。
向set集合中添加元素
set 集合中添加元素,可以使用 set 類型提供的 add() 方法實現,該方法的語法格式為:
1
setname.add(element)
其中,setname 表示要添加元素的集合,element 表示要添加的元素內容。
需要注意的是,使用 add() 方法添加的元素,只能是數字、字元串、元組或者布爾類型(True 和 False)值,不能添加列表、字典、集合這類可變的數據,否則 Python 解釋器會報 TypeError 錯誤。例如:
1
2
3
4
5
a = {1,2,3}
a.add((1,2))
print(a)
a.add([1,2])
print(a)
運行結果為:
1
2
3
4
5
{(1, 2), 1, 2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in
a.add([1,2])
TypeError: unhashable type: 'list'
從set集合中刪除元素
刪除現有 set 集合中的指定元素,可以使用 remove() 方法,該方法的語法格式如下:
1
setname.remove(element)
使用此方法刪除集合中元素,需要注意的是,如果被刪除元素本就不包含在集合中,則此方法會拋出 KeyError 錯誤,例如:
1
2
3
4
5
a = {1,2,3}
a.remove(1)
print(a)
a.remove(1)
print(a)
運行結果為:
1
2
3
4
5
{2, 3}
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in
a.remove(1)
KeyError: 1
2. java裡面的集合框架的set用法應該怎麼做
1、Set:它是無序、不重復、該介面中的方法和Collection介面中的方法一致。
繼承它的子類有HashSet和TreeSet。
HashSet:底層是哈希表數據結構,不同步的它保證元素的唯一性的方式。
根據元素的兩個方法來完成的,一個是HashCode、一個是equals方法,只有當hashCode方法算出哈希值相同時,會再次判斷兩個元素的equals方法是否為true,如果是true說明兩個元素相同,不存儲,所以往hashSet集合中存儲自定義對象時,要覆蓋hashCode,equals方法,通過自定義對象具備的特有數據定義hashCode、equals的具體實現。
treeSet:用於給集合中的額元素按照指定的順序進行排序,底層是二叉樹結構,線程是不同步的。
它保證元素的唯一性,就是通過元素對象的比較方法返回值來確定的,如果為0,則視為兩個元素時相同的元素,不存儲。
treeset的兩種排序方式:
1、讓元素自身具備比較功能,就是強制讓元素類去實現comparable介面,覆蓋compareTo方法,這時元素具備的自然排序,可是如果元素自身不具備比較功能,獲取具備的比較功能不是所需要的,這時排序方式就不能用了。
2、讓集合自身具備比較功能,需要定義比較器,其實就實現了comparetor介面的子類對象作為參數傳遞給treeSet集合的構造函數,讓treeSet集合一創建就具備了比較功能,該子類必須要覆蓋compare方法。
3. python中set的用法小結
python提供了常用的數據結構,其中之一就是set,python中的set是不支持索引的、值不能重復、無需插入的容器。
簡單記錄下set常用的操作函數:
1.新建一個set:
set("Hello"),這樣會轉成單個字元的值進行插入,結果是'H','e','l','o','l'因為重復只能插入一次。
2.增加一個元素:
add()用於增加一個元素值,
update([]),用於增加多個元素值,參數為list,注意如果用add增加多個值,會報參數類型錯誤。
3.刪除一個元素:
remove()用於刪除一個set中的元素,這個值在set中必須存在,如果不存在的話,會引發KeyError錯誤。
discard()用於刪除一個set中的元素,這個值不必一定存在,不存在的情況下刪除也不會觸發錯誤。
4.隨機刪除函數:
set提供了一個pop()函數,這個函數隨機返回一個元素值,然後把這個值刪除,如果set為空,調用這個函數會返回Key錯誤。
5.清空函數:
clear(),將set全部清空。
6.測試單個元素在集合內是否存在:
in 或者 not in 如果需要判斷一個值在集合內是否存在,in就能滿足要求,例如2 in set_num 如果存在則返回True,否則返回False。
7.測試兩個集合是否包含,子集操作:
issubset和issuperset,
s1.issubset(s2) :測試是否 s1 中的每一個元素都在 s2 中,運算符操作為 s1<=s2;
s2.issuperset(s1) :測試是否 s1 中的每一個元素都在 s2 中,運算符操作為 s1>=s2;//注意是s2調用,參數為s1.
8.集合的並集:
union s1.union(s2) :返回一個新集合,新集合包含s1,s2的所有元素,等價的運算符為 | 。
9.集合的交集:
intersection,s1.intersection(s2),返回s1和s2中相同部分
10.其他操作:
s1.difference(s2):包含s1中有,但是s2沒有的元素的集合。
s1symmetric_difference(s2):包含s1和s2中不相同的元素的集合。
以上只是一部分操作的描述,如果有錯誤,敬請指正。
4. Java中Set集合怎樣用for遍歷
set是要用迭代器訪問。迭代器好比一個指向元素之間的指針,每移動一次,就指向下一個元素。
迭代器英文叫做Iterator。set有iterator方法,傳給迭代器對象進行迭代。
示例如下:
package cn.util;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class SetDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Set set=new HashSet();
List list=new LinkedList();
list.add("1");
list.add("2");
set.add(list);
list=new LinkedList();
list.add("1");
list.add("2");
set.add(list);
set.add("a");
set.add("b");
set.add("a");
Iterator it= set.iterator();
while(it.hasNext())
{
Object ob=it.next();
if(ob instanceof List)
{
System.out.println(ob+" "+"true");
}
else{
System.out.println(ob+" "+"false");
}
}
System.out.println(set.size());
}
}
5. C++ 的 set 集合應該怎麼用,求簡單的初始化,添加值,和遍歷!!!
#include <iostream>
#include <set>
using namespace std;
void main()
{
set<int> s1; //空set集合
set<int>::iterator it;
int a[]= {1,2,3,4,5};
set<int> s2 (a,a+5); //利用指針對象初始化set集合
s2.insert(0); //插入方法1
s2.insert(s2.begin(),7); //插入方法2
int b[] ={10,11,12,13,14,15};
s2.insert(b,b+3); //插入方法3
cout<<"集合s2中的元素:"<<endl;
for(it=s2.begin();it!=s2.end();it++) //遍歷
cout<<" "<<*it<<endl;
system("pause");
}
6. 怎樣從java集合類set中取出數據
創建set的iterator方法:
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判斷是否有下一個
it.next()取出元素。
以上方法便是從Set集合中取出數據。
(6)set集合中常用方法擴展閱讀:
Java中使用Set介面描述一個集合(集合不允許有「重復值」,注意重復的概念),集合Set是Collection的子介面,Set不允許其數據元素重復出現,也就是說在Set中每一個數據元素都是唯一的。Set介面定義的常用方法如下:
1、size() 獲取Set尺寸(即Set包含數據元素的總數)。
2、 add(Object obj) 向Set中添加數據元素obj。
3、remove(Object obj) 從Set中移除數據元素obj。
4 、contains(Object obj) 判斷當前Set中是否包含數據元素obj,如果包含返回true,否則返回false。
5、iterator() 將Set裝入迭代器。
7. java中集合類List和Set集合中的一些方法的具體如何使用和具體分析:
構造方法摘要
ArrayList()
構造一個初始容量為 10 的空列表。
ArrayList(Collection<? extends E> c)
構造一個包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
ArrayList(int initialCapacity)
構造一個具有指定初始容量的空列表。
方法摘要
boolean add(E o)
將指定的元素追加到此列表的尾部。
void add(int index, E element)
將指定的元素插入此列表中的指定位置。
boolean addAll(Collection<? extends E> c)
按照指定 Collection 的迭代器所返回的元素順序,將該 Collection 中的所有元素追加到此列表的尾部。
boolean addAll(int index, Collection<? extends E> c)
從指定的位置開始,將指定 Collection 中的所有元素插入到此列表中。
void clear()
移除此列表中的所有元素。
Object clone()
返回此 ArrayList 實例的淺表復制。
boolean contains(Object elem)
如果此列表中包含指定的元素,則返回 true。
void ensureCapacity(int minCapacity)
如有必要,增加此 ArrayList 實例的容量,以確保它至少能夠容納最小容量參數所指定的元素數。
E get(int index)
返回此列表中指定位置上的元素。
int indexOf(Object elem)
搜索給定參數第一次出現的位置,使用 equals 方法進行相等性測試。
boolean isEmpty()
測試此列表中是否沒有元素。
int lastIndexOf(Object elem)
返回指定的對象在列表中最後一次出現的位置索引。
E remove(int index)
移除此列表中指定位置上的元素。
boolean remove(Object o)
從此列表中移除指定元素的單個實例(如果存在),此操作是可選的。
protected void removeRange(int fromIndex, int toIndex)
移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素。
E set(int index, E element)
用指定的元素替代此列表中指定位置上的元素。
int size()
返回此列表中的元素數。
Object[] toArray()
返回一個按照正確的順序包含此列表中所有元素的數組。
<T> T[]
toArray(T[] a)
返回一個按照正確的順序包含此列表中所有元素的數組;返回數組的運行時類型就是指定數組的運行時類型。
void trimToSize()
將此 ArrayList 實例的容量調整為列表的當前大小。
8. java中怎麼往集合類set里添加數據
兩種向Set中添加元素的方法,第一種是使用add()方法,每次添加一個元素到set中,當集合中不存在相同元素時將添加到集合中,並返回true,當集合中存在元素時,返回false。代碼如下:
Set<String> sets = new HashSet<>();
sets.add("String");
System.out.println(sets.add("Tree"));
System.out.println(sets.add("String"));
List<String> lists = new LinkedList<>();
lists.add("test");
lists.add("test");
lists.add("one");
System.out.println(sets.addAll(lists));
還有一個是向集合中批量添加元素的方法addAll(),這個方法的入參是Colletion。上述代碼執行結果如下:
擴展知識
Set集合可以知道某物是否已近存在於集合中,不會存儲重復的元素,注重獨一無二的性質,用於存儲無序(存入和取出的順序不一定相同)元素,值不能重復。可以很好地作為排重時使用的數據結構,但要注意集合內部數據一般情況沒有順序。常用的set有HashSet和TreeSet。
TreeSet是JAVA中集合的一種,TreeSet 是一個有序的集合,它的作用是提供有序的Set集合。它繼承於AbstractSet抽象類,實現了NavigableSet<E>,Cloneable,java.io.Serializable介面。一種基於TreeMap的NavigableSet實現,支持2種排序方式:自然排序或者根據創建TreeSet 時提供的 Comparator 進行排序。
9. python中set()函數的用法
python中set()函數的用法如下:
工具/原料:台式電腦、Win10、Python3.6.5。
1、首先按下「Win+R」組合鍵,打開運行窗口,如下圖所示。
10. java 集合set類中是如何實現數據不能重復的
Set 有個 add 方法是將元素添加到 Set 中,以 HashSet 為例。
publicbooleanadd(Ee){
returnmap.put(e,PRESENT)==null;
}
可以看到,HashSet 底層的數據結構是一個HashMap<E,Object> ,將 e 作為 HashMap 的 key 保存的。而 HashMap 的底層數據結構是 HashTable ,根據 HashMap 的 key 的HashCode 去 HashTable (具體實現是數組+鏈表) 里找到元素的位置。如果同一個對象(使用equals 來比較兩個對象是否相同,具體是比較對象的 hashCode() 是否相同) 往Set 里放,最終放到 HashTable 的位置是相同的。具體判斷Set 是否包含某個對象,調用的是Set的contains(Object o) 方法,它內部也是通過計算 o 的hashCode 去查找該元素是否存在的。
如果題主是新學習Java的同學,建議重點學習一下常用集合的數據結構,對於掌握Java這門語言非常有幫助。