在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。
创建集合set、集合set添加、集合删除、交集、并集、差集的 *** 作都是非常实用的方法。set是一个无序的元素集合,支持并、交、差及对称差等数学运算,但由于set不记录元素位置,因此不支持索引、分片等类序列的 *** 作。
tuple算是list和str的杂合(杂交的都有自己的优势,上一节的末后已经显示了),那么set则可以堪称是list和dict的杂合。
set拥有类似dict的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键,set也有一点list的特点:有一种集合可以原处修改。
以上内容参考 百度百科-Python
在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种。
创建集合set、集合set添加、集合删除、交集、并集、差集的 *** 作都是非常实用的方法。set是一个无序的元素集合,支持并、交、差及对称差等数学运算,但由于set不记录元素位置,因此不支持索引、分片等类序列的 *** 作。
python 中list,tuple,dict,set是最常用的集合类型。
list列表,相当于一个数组,不过list的长度是自动变化的而且列表元素自由的,不必每个元素都是同一种类型。它的简洁的定义方式是a=[]。有序组合
tuple也是一个组合。不过tuple在定义好之后就不能再变化。它的简洁的定义方式是a=1,3也可以是a=(1,3).有序组合。
dict是字典类型。也就是键值对类型。键名不可以重复,并且不可以变化(字符串就符合这个要求,常用字符串作为键名)。它的简洁的定义方式是a={}.无序组合(意思就是你无法按照添加的顺序对他进行遍历)。
set是set类型(不好翻译,用的也少)。也是一个无序的组合,元素是互斥的,也就不会出现相同的元素。可以把一个序列转换成无重复元素的set.无序组合。
set的基本 *** 作:
begin() 返回指向第一个元素的迭代器
clear() 清除所有元素
count() 返回某个值元素的个数
empty() 如果集合为空,返回true
end() 返回指向最后一个元素的迭代器
equal_range() 返回集合中与给定值相等的上下限的两个迭代器
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器
get_allocator() 返回集合的分配器
insert() 在集合中插入元素
lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
key_comp() 返回一个用于元素间值比较的函数
max_size() 返回集合能容纳的元素的最大限值
rbegin() 返回指向集合中最后一个元素的反向迭代器
rend() 返回指向集合中第一个元素的反向迭代器
size() 集合中元素的数目
swap() 交换两个集合变量
upper_bound() 返回大于某个值元素的迭代器
value_comp() 返回一个用于比较元素间的值的函数
5,自定义比较函数:
For example:
#include<iostream>#include<set>
using namespace std
typedef struct {
int a,b
char s
}newtype
struct compare //there is no ().
{
bool operator()(const newtype &a, const newtype &b) const
{
return a.s<b.s
}
}//the “ ” is here
set<newtype,compare>element
int main()
{
newtype a,b,c,d,t
a.a=1 a.s='b'
b.a=2 b.s='c'
c.a=4 c.s='d'
d.a=3 d.s='a'
element.insert(a)
element.insert(b)
element.insert(c)
element.insert(d)
set<newtype,compare>::iterator it
for(it=element.begin() it!=element.end()it++)
cout<<(*it).a<<" "
cout<<endl
for(it=element.begin() it!=element.end()it++)
cout<<(*it).s<<" "
}
element自动排序是按照char s的大小排序的;
6.其他的set构造方法;
#include <iostream>#include <set>
using namespace std
bool fncomp (int lhs, int rhs) {return lhs<rhs}
struct classcomp {
bool operator() (const int& lhs, const int& rhs) const
{return lhs<rhs}
}
int main ()
{
set<int> first // empty set of ints
int myints[]= {10,20,30,40,50}
set<int> second (myints,myints+5) // pointers used as iterators
set<int> third (second) // a copy of second
set<int> fourth (second.begin(), second.end()) // iterator ctor.
set<int,classcomp> fifth // class as Compare
bool(*fn_pt)(int,int) = fncomp
set<int,bool(*)(int,int)> sixth (fn_pt) // function pointer as Compare
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)