-
2020-06-20 23:58:45
本文代码上下文
temp = {1,3,5,6,9,100,111,323}
第一种:remove()方法
说明:remove方法删除元素时,如果元素不存在,会引发KeyError的错误
temp.remove(1)
第二种方式:discard()方法
说明:discard方法删除元素时,元素不存在,不会引发任何错误
temp.discard(999)
第三种方式:pop()方法
说明:从set中随机删除并返回一个元素,set为空会引发KeyError
temp.pop()
第四种方式:clear()方法
说明:移除set中的所有元素
temp.clear()
更多相关内容 -
Python集合(set)删除元素
2021-09-23 16:30:26Python集合(set)删除元素教程 Python 的 集合 删除元素有三种方式,分别为:使用 remove 方法、使用 discard 方法和使用 pop 方法。 Python集合(set)删除元素对比 函数 描述 remove 使用 remove 方法删除元素...Python集合(set)删除元素教程
Python 的 集合 删除元素有三种方式,分别为:使用 remove 方法、使用 discard 方法和使用 pop 方法。
Python集合(set)删除元素对比
函数 描述 remove 使用 remove 方法删除元素时,如果元素不存在集合中,那么程序会报错。 discard 使用 discard 方法删除元素时,如果元素不存在集合中,那么程序不会报错。 pop 使用 pop 方法删除集合中的元素时,会自动删除集合中的第一个元素,并返回被删除的元素,如果集合为空,程序报错。 remove方法删除元素详解
语法
s.remove(element)
参数
参数 描述 s 集合名。 element 需要删除的元素。 说明
从集合 s 中,删除元素 element,如果元素 element 不存在,程序报错。
discard方法删除元素详解
语法
s.discard(element)
参数
参数 描述 s 集合名。 element 需要删除的元素。 说明
从集合 s 中,删除元素 element,如果元素 element 不存在,程序不报错。
pop方法删除元素详解
语法
s.pop()
参数
参数 描述 s 集合名。 返回值
返回被弹出的元素。
说明
从集合 s 中,删除第一个元素,并返回被删除的元素。
案例
使用 remove 方法删除元素
使用 remove 方法,从集合中删除元素
print("嗨客网(www.haicoder.net)") # 使用 remove 方法,从集合中删除元素 s = {"Hello", "HaiCoder", 1024} s.remove("Hello") print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个集合 s,集合的第一个和第二个元素都是 string 类型,第三个元素是 int 类型的。
接着,我们使用 remove 方法,删除集合中的 “Hello” 元素, 最后,我们使用 print 打印集合的内容,发现元素 “Hello” 已经被删除。
使用 remove 方法删除元素
使用 remove 方法,从集合中删除不存在的元素,报错
print("嗨客网(www.haicoder.net)") # 使用 remove 方法,从集合中删除不存在的元素,报错 s = {"Hello", "HaiCoder", 1024} s.remove("haicoder") print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个集合 s,接着,我们使用 remove 方法,删除集合中的 “haicoder” 元素, 因为元素 “haicoder” 不存在集合中,因此程序报错。
使用 discard 方法删除元素
使用 discard 方法,从集合中删除元素
print("嗨客网(www.haicoder.net)") # 使用 discard 方法,从集合中删除元素 s = {"Hello", "HaiCoder", 1024} s.discard("Hello") print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个集合 s,接着,我们使用 discard 方法,删除集合中的 “Hello” 元素, 最后,我们使用 print 打印集合的内容,发现元素 “Hello” 已经被删除。
使用 discard 方法删除元素
使用 discard 方法,从集合中删除元素
print("嗨客网(www.haicoder.net)") # 使用 discard 方法,从集合中删除元素 s = {"Hello", "HaiCoder", 1024} s.discard("haicoder") print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个集合 s,接着,我们使用 discard 方法,删除集合中的 “haicoder” 元素, 元素 “haicoder” 不存在集合中,但程序不会报错。
使用 pop 方法删除元素
使用 pop 方法,从集合中删除元素
print("嗨客网(www.haicoder.net)") # 使用 pop 方法,从集合中删除元素 s = {"Hello", "HaiCoder", 1024} print("Before =", s) item = s.pop() print("Item =", item) print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个集合 s,接着,我们使用 pop 方法,删除集合中的第一个元素, 并打印被删除的元素。
使用 pop 方法删除元素
使用 pop 方法,从集合中删除元素
print("嗨客网(www.haicoder.net)") # 使用 pop 方法,从集合中删除元素 s = {} item = s.pop() print("Item =", item) print("Set =", s)
程序运行后,控制台输出如下:
我们使用 {} 定义了一个空集合 s,接着,我们使用 pop 方法,删除空集合中的第一个元素, 程序报错。
Python集合(set)删除元素总结
使用 remove 方法删除元素时,如果元素不存在集合中,那么程序会报错。使用 discard 方法删除元素时,如果元素不存在集合中,那么程序不会报错。
使用 pop 方法删除集合中的元素时,会自动删除集合中的第一个元素,并返回被删除的元素,如果集合为空,程序报错。
-
遍历List、Set时删除元素的正确方法
2019-06-23 22:36:20作为一个java初学者,想在某一List、Set里删除具有某一特性的元素时,很自然的想法就是,for each 循环遍历,然后判断特性是否符合,如果符合就直接remove该元素。想起来似乎是没毛病,但是,真的没问题吗?下面看一...作为一个java初学者,想在某一List、Set里删除具有某一特性的元素时,很自然的想法就是,for each 循环遍历,然后判断特性是否符合,如果符合就直接remove该元素。想起来似乎是没毛病,但是,真的没问题吗?下面看一个简单的例子:
如果正常情况下,应该会删除掉“abcd”。
跑一下看一下,发现报错:
原因是for each的底层其实也是用迭代器实现的,在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除,就会抛出 java.util.ConcurrentModificationException异常。那么在遍历的同时删除或插入元素的正确姿势是什么样的呢?
对代码做以下修改:
输出结果为:
可以看到,使用迭代器自身的remove方法,就不会抛出异常。
这是为什么呢?
Iterator被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,当索引指针往后移动的时候就找不到要迭代的对象,所以会抛出ConcurrentModificationException异常。
erator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象,因为Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。举个例子进行分析:
但是结果:
画diagram进行分析:
可见索引的一致性被迫坏。 -
C++容器之 vector map set 删除元素
2018-09-04 22:01:42前面一章节主要是针对容器的增加,可以明显看到关联容器...3、set的元素删除 小结 代码 1、vector的元素删除 vector的删除主要有三种方法:erase、pop_back和 remove(algortihm)。 iterator erase(i...前面一章节主要是针对容器的增加,可以明显看到关联容器和顺序容器的特点,下面主要介绍两类容器的删除和查找的区别
目录
1、vector的元素删除
vector的删除主要有三种方法:
erase、pop_back和 remove(algortihm)
。iterator erase(iterator first,iterator second)
删除区间[first,last)之间的元素iterator erase(iterator position)
删除当前位置的元素,但注意删除后、position 会自动++, 返回的iterator指向新的容器中(最后一个删除元素)的下一个位置。
void clear()
清空所有元素void pop_back()
删除最后一个元素iterator remove(iterator first,iterator second,value)
返回最后一个元素的iterator,容器后面的依然保留了。
经常使用方法:
iv.erase(remove(iv.begin(), ib.end(), remove_value), iv.end());
算法描述:查找的得到第一个元素的位置,然后从此位置开始遍历容器,将后面的元素依次前移,跳过和value相同值的元素.
也就是说,所有和value相同值的元素都会被覆盖,而其他的元素都会依次前移。
最后,remove返回”指向最后一个 ‘有用’ 元素的iterator”,
但是在remove算法过程中,并没有修改原容器的size,以及end()。2、map的元素删除
map的删除
map::erase()
下面两种方法和vector的相同
iterator erase(iterator first,iterator second)
删除区间[first,last)之间的元素iterator erase(iterator position)
删除当前位置的元素,但注意删除后、position不会自动++,被删除元素的迭代器,在删除之后失效!这里是和vector的区别!
3、set的元素删除
- (1) 移除set容器内元素值为value的所有元素,返回移除元素的个数
size_type erase(value)
- (2) 移除pos位置上的元素,无返回值
void erase(iterator pos)
删除后pos不会自动++!这里是和vector的区别
不会自动++,被删除元素的迭代器,在删除之后失效!这里是和vector的区别!- (3) 移除迭代区间[first,last)内的所有元素,无返回值
void erase(iterator first, iterator last)
(4) 移除set容器内所有的元素
void clear()
小结
从上面来看,其实两类容器在删除的功能来说是很相似的,都主要删除指定的iterator和区间内的iterator。唯一不一样的是,因为两者在内存中的形式不一样,如果调用
remove()
方法以后,vector对应的iterator所指向的删除后的下一个位置。而后者这是指着失效的iterator.代码
#include <iostream> #include <algorithm> using namespace std; #include <map> typedef pair<int,string> stuType; void print(map<int,string> stu) { auto ib = stu.begin(); while(ib != stu.end()) { cout << ib->first << " " << ib->second << endl; ib++; } } int main(int argc, char *argv[]) { map<int,string> mapstu; //1.方法1:pair pair<map<int,string>::iterator,bool> insert_pair = mapstu.insert(pair<int,string>(1,"LiLei")); //若插入成功insert_pair.second为true if(insert_pair.second) cout <<" insert success!" << endl; mapstu.insert(stuType(2,"HanMeiMei")); //2.方法2:value_type mapstu.insert(map<int,string>::value_type(3,"xiaoming")); //3.方法3:数组形式 mapstu[6] = "ZhaoYun"; print(mapstu); //删除 cout << "---before erase---\n"; map<int,string>::iterator ib= mapstu.begin(); for(;ib!= mapstu.end();ib++) cout << ib->first << " " << ib->second << endl; cout << "--------------\n"; ib = mapstu.begin(); mapstu.erase(ib); print(mapstu); return 0; } >>> insert success! 1 LiLei 2 HanMeiMei 3 xiaoming 6 ZhaoYun ---before erase- 1 LiLei 2 HanMeiMei 3 xiaoming 6 ZhaoYun -------------- 2 HanMeiMei 3 xiaoming 6 ZhaoYun
有个奇怪的
现象
:
如果,在输出的时候,以数组的形式访问的话,那么对于不存在key的结点,那么会自动增加该结点到map中,value的值为空字符。 -
STL-set (集合)之删除元素
2016-11-10 21:25:52set概述 和vector、list不同,set、map都是关联式容器。set内部是基于红黑树实现的。插入和删除操作效率较高,因为只...指向其他元素的迭代器还是指向原位置,并没有改变,所以删除一个节点后其他迭代器不会失效。lis -
set删除某位置元素
2016-11-01 11:25:22set删除确定值的元素可以用erase,那么如果要删除第i个元素怎么办呢? 迭代器实现,代码如下: set<int>s; for(int i=1;i;i++) s.insert(i); //把i~5的元素插入 set<int>::iterator it; it=s.begin(); //... -
java中关于集合set类的使用,删除集合中的元素
2015-11-13 17:17:40Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set...因为set类和list类基本一致,这里就不多说了,本文主要讲解的是set类中集合的删除。 查阅api。我们发现集合中用迭代的方式遍历一个集合。然后我 -
关于使用set的iterator删除set中的元素
2018-04-05 23:10:58/*目的,删除后九个元素,之后输出剩下的元素。*/ /* 总结 set的iterator要用++或者--移动。 */ #include<bits/stdc++.h> using namespace std; int main() { set<int> s; ... -
Set集合按条件删除元素
2018-01-12 10:58:00不能在for循环中删除,这样会引起Set的size();变化,进而程序报错. 2.不能在foreach中使用set.remove(Object obj);方法 正确的是使用迭代器,利用其迭代器对象的remove()方法,但必须保证在使用remove()之前调用... -
python删除set中的某个元素
2019-09-14 09:50:06###删除set中的某个元素 如删除空格 while '' in setA: setA.remove('') ###删除list中的某个元素 list删除某个元素的可以有以下方法 del listA[index] listA.pop() #删除最后一个 listA.remove(ob... -
python中如何在set中添加元素?语句是什么
2020-12-15 13:03:22匿名用户1级2019-02-28 回答python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称... -
集合Set,List,Map添加删除元素效率比较
2021-03-06 18:28:27Set接口实现类HashSet、TreeSet、LinkedHashSet; Map接口实现类LinkedHashMap、TreeMap、HashMap的存、取速度进行比较。LinkedList与ArrayList:LinkedList采用链表结构,在数据量较大时,插入元素只需改变插入点的... -
ArraySet 添加和删除元素分析
2018-10-15 10:44:15一直在使用Set相关类进行运行时数据存储,之前也有知道Android为了更加有效的利用内存,在23的时候设计了自己的一套运行时的集合类。本文的以我的视角分析ArraySet的add和remove过程,并做了简单的对比分析。 ##结构... -
STL/C++__中 set(集合) 删除元素
2015-10-10 15:01:40using std::set; int main(int argc,char *argv[]) { set s; set::iterator it; s.insert(1); s.insert(2); s.insert(3); for(it=s.begin();it!=s.end();){ if((*it)%2==0) s.erase(it++); -
从Java中的HashSet中删除单个元素
2021-03-13 20:39:32要从HashSet中删除单个元素,请使用remove()方法。首先,创建一个HashSet-HashSeths=newHashSet();现在,将元素添加到HashSet-hs.add("R");hs.add("S");hs.add("T");hs.add("V");hs.add("W");hs.add("Y");hs.add("Z... -
取集合中元素_Python Set集合
2021-03-06 22:33:24基本功能是进行成员关系测试和删除重复元素。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。# 集合的定义set1 = set() #定义一个空的... -
set集合判断集合中是否有无元素_算法:如何使用C++实现一个简单的集合类
2020-11-21 12:08:47(1)向集合中添加元素,如果集合中已存在元素则不添加(2)从集合中移除元素,移除之前需要先判断集合中元素是否存在(3)重载+运算符,用以实现集合的求并集运算(4)重载*运算符,用以实现集合的求交集运算1.类的... -
Java Set.remove()方法:移除Set集合中的指定对象
2021-03-17 22:43:21Java集合类中的 Set.remove() 方法用于移除 Set 集合中的指定对象。该方法返回值为 boolean 类型,如果 Set 集合包含参数 o 指定的对象,则返回 true,否则返回 false。语法:remove(Object o)参数说明:o:是要移除... -
redis sadd 命令 以及 删除set集合或者单独删除set中的一多条记录
2022-03-23 09:43:04redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。 假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。 当集合 key 不是集合类型时,返回一个错误。 使用起来也... -
c++ set 中如何循环删除元素
2013-04-15 20:43:00直接上代码 std::set<int>::iterator it = setINT.begin();for (; it != setINT.end();){if (*it < 4 ||*it >... //保存要删除的指针std::set<int>::iterator itmp = it;it++;setINT.er... -
vue2中的给对象增加和删除元素$set和$delete方法来操作(这里不支持JavaScript原生方法)
2019-01-09 15:25:12特别注意:JavaScript语法中(对象或数组), 如果obj中的name属性不存在,那么增加一个元素是,obj....删除一个元素:delete obj.name (vue2.0对象或数组无效,使用Vue.delete() 静态方法 或 vm.$delete实例方... -
Redis中如何设置set中的元素过期
2021-04-15 19:21:17最近在工作中碰到了这个问题,我需要在一个set中记录集群...先用ZRemRangeByScore删除过期元素(分数之外的元素),然后每个pod带上过期时间戳去定时去EasyZAdd,下面是伪代码 for{ nowTime := time.Now().Unix() re -
Map中根据条件删除元素
2021-03-15 03:00:13今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下:public Map processMap(Map list) {Map map = list;Iterator iter = ... -
Java Set remove()用法及代码示例
2021-02-12 18:51:21java.util.Set.remove(Object O)方法用于从Set中删除特定元素。用法:boolean remove(Object O)参数:参数O是此Set维护的元素类型,并指定要从Set中删除的元素。返回值:如果Set中存在指定的元素,则此方法返回True,... -
Java 清空Set集合里面所有元素
2020-09-27 17:39:31项目开发中,再清空Set集合里面所有元素时,我使用set.clear()方法,失败 -
redis sadd 命令 以及 删除set集合或者单独删除set中的一/多条记录
2020-04-09 20:19:07redis Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。 假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。 当集合 key 不是集合类型时,返回一个错误。 使用起来... -
python之Set操作(下)
2021-03-17 02:53:06Set删除1) 删除一个指定元素2) 随机删除一个元素3) 清空Set4) 删除整个Set6. Set判断1) 判断两个Set是否相等2) 判断两个Set有没有交集3) 判断一个Set是否包含另一个Set4) 判断一个Set是否是另一个Set的子集5) 判断... -
set插入和删除
2019-07-04 17:04:23set容器进行插入数据和删除数据 函数原型: insert(elem); //在容器中插入元素。 clear(); //清除所有元素 erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。 erase(beg, end); //删除区间[beg,... -
Java删除List和Set集合中元素
2016-12-28 15:01:46今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录如下: 错误代码的写法,也就是报... -
redis-set常用命令
2017-10-08 23:21:05redis set