美文网首页
2021-12-03 Python-11

2021-12-03 Python-11

作者: MaggieXie | 来源:发表于2021-12-03 20:17 被阅读0次

集合

集合与字典类似,但是只有键没有值。所以结合中的元素是无序且唯一的且不可变。

  1. 集合的创建
    集合可以直接通过 set 函数或者用 {} 创建。
a=set([1,2,3,4,5])
a={1,2,3,4,5}
  1. 集合的运算
    集合支持数学上的结合操作,比如交集,并集
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
  1. 集合增加和删除元素
    集合不像字典,不能对 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)
#结果与上述相同

相关文章

网友评论

      本文标题:2021-12-03 Python-11

      本文链接:https://www.haomeiwen.com/subject/xtrmxrtx.html