Python学习之路-----set高级变量、range生成整数序列、匿名函数

set

    格式:  变量名 = { 元素1 , 元素2 ....}

    set,另一种高级变量数据类型,它存储的数据不仅是无序的而且是不重复的

    作用:用于对列表或者元组去重。

set1 = {1,5,6,2,5,7,7,5,2,3,1}
print(set1)
print(len(set1))
print(type(set1))

结果:
{1, 2, 3, 5, 6, 7}
6
<class 'set'>

     以上例子说明当set容器中元素有重复时,在输出的时候会把重复的元素去掉,容器的长度也是实际去重之后的长度。

集合的交、并、差集

set1 = {1,3,5,10,100}
set2 = {2,4,6,10,200}
set3 = set1 - set2 #在set1且不在set2
print(set3)
set4 = set2 - set1 #在set2且不在set1
print(set4)

set5 = set2 & set1 #set1与set1的交集
print(set5)
set6 = set2 | set1 #set1与set1的并集
print(set6)
set7 = set2 ^ set1 #set3与set4的并集
print(set7)
#结果
#{1, 3, 100, 5}
#{200, 2, 4, 6}
#{10}
#{1, 2, 3, 4, 100, 6, 5, 200, 10}
#{1, 2, 3, 4, 5, 6, 200, 100}

list和tuple去除

使用set(list/tuple)就可以实现去重。

list1 = [8,6,8,4,2,6,9,5,6,9,5]
tuple1 = (3,6,5,9,5,2,4,5,9)

result_list = set(list1)
result_tuple = set(tuple1)
print("去重之后:(注意使用set去重之后就是set类型,若还想换回原来的类型需要强转!)")
print(result_list)
print(result_tuple)
print("\n强转之后:")
print(list(set(list1)))
print(tuple(set(tuple1)))

结果:
去重之后:(注意使用set去重之后就是set类型,若还想换回原来的类型需要强转!)
{2, 4, 5, 6, 8, 9}
{2, 3, 4, 5, 6, 9}

强转之后:
[2, 4, 5, 6, 8, 9]
(2, 3, 4, 5, 6, 9)

注意:虽然看着结果排序了,但是实际上却没有排序。这个例子只是恰好都是数字再结合set内部实现而出现的结果。

 

 

range

    range的作用是生成一个整数序列。

    格式:range(起始数,结束数,步长),左闭右开。开始数默认为0,步长默认是1.

     range经常与for结合使用。

a = range(0,5)
print(a)

for i in a:
    print(i)


结果:
range(0, 5)
0
1
2
3
4

列表推导式:

    以表达式的方式快捷生成一个列表,格式:  列表名 = [ 计算公式   for    其他]

list1 = [i for i in range(1,10)]
print(list1)

 

匿名函数

        匿名函数就是没有名字的函数,主要使用lambda表达式实现的。格式:   lambda 参数:表示式

func = lambda a,b:a+b
print(type(func))

结果:
<class 'function'>

两种调用方式

(1)变量接收lambda表达式的定义,然后传参调用

func = lambda a,b:a+b
print(func(1,2))

结果:
3

    lambda表达式会把计算结果直接返回

 

 

 

(2)在定义lambda表达式的时候直接传参调用

result = (lambda a:a ** 2) (3)
print(result)

结果:
9

在定义lambda表达式的时候用()括住整个定义,然后再传参调用。

 

匿名函数与filter\map\reduce的结合使用

from functools import reduce

list1 = [1,2,3,4,5]
ret_filter = filter(lambda x: x % 2,list1)
print('type(ret_filter):{},ret_filter:{},list(ret_filter):{}'.format(type(ret_filter),ret_filter,list(ret_filter)))

ret_map = map(lambda x: x + 2,list1)
print('type(ret_map):{},ret_map:{},list(ret_map):{}'.format(type(ret_map),ret_map,list(ret_map)))

ret_reduce = reduce(lambda x,y:x + y,list1)
print('type(ret_reduce):{},ret_reduce:{}'.format(type(ret_reduce),ret_reduce))

结果:
type(ret_filter):<class 'filter'>,ret_filter:<filter object at 0x030FF910>,list(ret_filter):[1, 3, 5]
type(ret_map):<class 'map'>,ret_map:<map object at 0x031101D0>,list(ret_map):[3, 4, 5, 6, 7]
type(ret_reduce):<class 'int'>,ret_reduce:15

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值