集合
集合与字典类似,但是只有键没有值。所以结合中的元素是无序且唯一的且不可变。
- 集合的创建
集合可以直接通过 set 函数或者用 {} 创建。
a=set([1,2,3,4,5])
a={1,2,3,4,5}
- 集合的运算
集合支持数学上的结合操作,比如交集,并集
b={3,4,5,6,7,8}
#取并集
a.union(b)
a | b
#取交集
a.intersection(b)
a&b
a.intersection_update(b) #将a和b的交集传递给a
a.difference(b) #在a不在b中的元素
a.difference_update(b) #在a不在b中的元素传递给a
a.issubset(b) #如果a是b的子集,返回True
a.isupperset #如果a包含b,返回True
- 集合增加和删除元素
集合不像字典,不能对 key 的进行赋值。
x='added value'
a.add(x) #将某个元素增加到集合中
a.update(b) #将a变成a和b的交集,注意和set.union区分开。后者取交后原集合的内容不变
a.pop() #无参数,随机删除集合中的元素
a.remove('added value') #删除特定的元素
列表、集合、字典推导式
列表推导式的基本形式为:
[expr for val in collection if condition]
与 for 循环是等价的
result=[]
for val in collection:
if condition:
result.append(expr)
举个例子,体会一下推导式的便利。
#给定一个字符串列表,过滤长度>2的元素,并将字母改成大写
strings=['a','as','bat','car','dove','python']
strings_1=[string.upper() for string in strings if len(string)>2]
strings_1
#结果:['BAT', 'CAR', 'DOVE', 'PYTHON']
#如果不按照推导式
strings_1=[]
for string in strings:
if len(string)>2:
strings_1.append(string.upper())
#结果与上述相同
字典推导式与列表推导式相似
{key-express : value_express for val in collection if condition}
集合推导式
{expr for val in colletion if condition}
嵌套列表推导式
如果列表中嵌套了列表,需要用到列表的嵌套推导式
#存在data为由两个列表组成的列表,找出所有包含了2个以上字母e的名字
data=[['John','Emily','Michael','Mary','Steven'],['Maria','Juan','Javier','Pilar']]
data_update=[name for sublist in data for name in sublist if name.count('e') >=2]
#结果:['Steven']
#嵌套格式也可以写作
data_update=[[name for name in sublist if name.count('e') >=2] for sublist in data ]
#相当于
data_update=[]
for sublist in data:
sublist_update=[name for name in sublist if name.count('e')>=2]
data_update.extend(sublist_update)
#结果与上述相同
网友评论