Python ☞ day 4

2018-05-03  本文已影响0人  浪子彦卿L

Python学习笔记之 (set)集合 & 迭代器 & 函数 & 匿名函数 & 高阶函数

set

set:类似dict1,是一组key的集合,不存储value
本质:无序和无重复元素的集合

#创建
#创建set需要一个list或者tuple或者dict作为输入
#重复元素在set中会自动被过滤
set1 = set([1,2,3,4,5,5,4,3,3])
print(set1)

set2 = set((1,2,3,4,3,2))
print(set2)

set3 = set({1:"good",2:"nice"})
print(set3)
#添加
set4 = set([1,2,3,4,5])
set4.add(6)
set4.add(4) #可以添加重复的,但是不会有效果
#set4.add([7,8,9]) #set的元素不能是列表,因为列表是可变的
set4.add((7,8,9))
#set4.add({4:"good"}) #set的元素不能是字典,因为字典也是可变的
print(set4)
#插入整个list、tuple、字符串,打碎插入
set5 = set([1,2,3,4,5])
set5.update([6,7,8])
set5.update((9,10))
set5.update("sunck")
print(set5)
#删除
set6 = set([1,2,3,4,5])
set6.remove(3)
print(set6)
#遍历
set7 = set([1,2,3,4,5])
for i in set7:
    print(i)
#set没有索引
#print(set7[2])

for index,i in enumerate(set7):
    print(index,i)
set8 = set([1,2,3])
set9 = set([2,3,4])
#交集
a1 = set8 & set9
print(a1)
print(type(a1))
#并集
a2 = set8 | set9
print(a2)
print(type(a2))

类型转换

#list > set
l1 = [1,2,3,4,5,5,3,2,5,6,9]
print(set(l1))

#tuple > set
t1 = (1,2,3,4,4,5,2)
print(set(t1))

#set > list
s1 = {1,2,3,4}
print(list(s1))

#set > tuple
s2 = {1,2,3,4,5}
print(tuple(s2))
迭代器
from collections import Iterable,Iterator
print(isinstance([],Iterable))
print(isinstance((),Iterable))
print(isinstance({},Iterable))
print(isinstance("",Iterable))
print(isinstance((x for x in range(10)),Iterable))
print(isinstance([],Iterator))
print(isinstance((),Iterator))
print(isinstance({},Iterator))
print(isinstance("",Iterator))
print(isinstance((x for x in range(10)),Iterator))

l = (x for x in range(10))
print(next(l))
print(next(l))
print(next(l))
print(next(l))
#转成Iterator对象
a = iter([1,2,3,4,5])
print(next(a))
print(next(a))
print(isinstance(iter([]),Iterator))
print(isinstance(iter(()),Iterator))
print(isinstance(iter({}),Iterator))
print(isinstance(iter(""),Iterator))
'''
endstr = "end"
str = ""
for line in iter(input,endstr):
    str += line + "\n"
print(str)
'''
函数
'''
定义函数:
格式:
def 函数名(参数列表):
    语句
    return 表达式

def:函数代码块以def关键字开始
函数名:遵循标识符规则
():是参数列表的开始和结束
参数列表(参数1,参数2,……,参数n):任何传入函数的参数和变量必须放在圆括号之间,用逗号分隔。函数从函数的调用者那里获取的信息
冒号:函数内容(封装的功能)以冒号开始,并且缩进。
语句:函数封装的功能
return:一般用于结束函数,并返回信息给函数的调用者。
表达式:即为要返回给函数的调用者的信息,

注意:最后的return表达式,可以不写,相当于return None
'''
#   定义了一个无参无返回值的函数
def myPrint():
    print("lee is a very good man!")
    print("lee is a nice man!")
    print("lee is a handsome man!")
myPrint()
myPrint()
myPrint()
myPrint()
函数的参数
#   需求:编写一个函数,给函数一个字符串和一个年龄,在函数内部打印出来

#   形参(形式参数):定义函数时小括号中的变量,本质是变量
#   参数必须按顺序传递,个数目前要对应
# def myPrint(str,age,hoby):
#     print(str,age)
def myPrint(str,age):
    print(str,age)

#   实参(实际参数):调用参数时给函数传递的数据,实参的本质是值
myPrint("lee is a good man!", a)
#   编写函数,实现功能,给函数两个数,返回这两个数的和
def mySum(num1,num2):
    #   将结果返回给函数的调用者
    return num1 + num2
    #   执行完return语句,该函数就结束了,return后面的代码不执行
    print("888888888")

res = mySum(1,2)
print(res)
def func1(num):
    num = 10

temp = 20
func1(temp)     #num = temp
print(temp)

def func2(lis):
    lis[0] = 100

list1 = [1,2,3,4,5]
func2(list1)
print(list1)
def myPrint(str,age):
    print(str,age)

#   使用关键字参数
myPrint(age = 18,str = "lee is a good man!")
#   要用默认参数,最好将默认参数放在最后
def myPrint(str,age = 18):
    print(str,age)
myPrint("lee",10)
#   加了星号(*)的变量存放未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
def function(name, *args):
    print(name)
    print(type(args))
    for x in args:
        print(x)
function("lee","good","nice")

def function1(*args):
    sum = 0
    for i in args:
        sum += i
    return sum
print(function1(1,2,3,4,5,5,6,7,7,1))

#   **代表着键值对的参数字典,和*所代表的意义类似
def function2(**kwargs):
    print(kwargs)
    print(type(kwargs))
function2(x=1,y=2,z=3)


def function3(*args,**kwargs):
    pass    #代表一个空语句
匿名函数
sum = lambda num1,num2:num1 + num2
print(sum(1,2))
高阶函数
'''
def myMap(func, li):
    resList = []
    for parase in li:
        res = func(parase)
        resList.append(res)
'''


#将单个字符转成对应的字面量整数
def chr2int(chr):
    return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]

list1 = ["2","1","6","5"]
res = map(chr2int, list1)
#[chr2int("2"),chr2int("1"),chr2int("6"),chr2int("5")]
print(res)
# 打印结果:<map object at 0x000001CE1D0C9E10>
print(list(res))
# 打印结果:[2, 1, 6, 5]


#将整数元素的序列,转为字符串型
#[1,2,3,4]  -> ["1","2","3","4"]
l = map(str, [1,2,3,4])
print(list(l))
# 打印结果:['1', '2', '3', '4']
#求一个序列的和
list2 = [1,2,3,4,5]
#1 + 2
#1 + 2  + 3
#1 + 2  + 3 +4
#1 + 2  + 3 +4 +5
def mySum(x,y):
    return x + y
r = reduce(mySum, list2)
print("r =", r)
# 打印结果:15


# 需求:将字符串转成对应字面量数字
def str2int(str):
    def fc(x, y):
        return x * 10 + y
    def fs(chr):
        return {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}[chr]
    return reduce(fc, map(fs, list(str)))

a = str2int("12534")
print(a)
print(type(a))

list1 = [1,2,3,4,5,6,7,8,9]
#筛选条件
def func(num):
    #偶数保留
    if num%2 == 0:
        return True
    #奇数剔除
    return False
l = filter(func, list1)
print(list(l))
# 打印结果:[2, 4, 6, 8]

data= [["姓名","年龄","爱好"],["tom", 25, "无"],["hanmeimei", 26, "金钱"]]
def func2(v):
    v = str(v)
    if v == "无":
        return False
    return True
for line in data:
    m = filter(func2, line)
    print(list(m))
# 打印结果:
['姓名', '年龄', '爱好']
['tom', 25]
['hanmeimei', 26, '金钱']
# sorted排序:
普通排序
list1 = [3,4,6,2,9]
list2 = sorted(list1)   #默认升序排序
print(list1)
#打印结果:[3, 4, 6, 2, 9]
print(list2)
#打印结果:[2, 3, 4, 6, 9]

#按绝对值大小排序
list3 = [3,4,-7,6,-10,2,9]
#key接受函数来实现自定义排序规则
list4 = sorted(list3, key=abs)
print(list3)
#打印结果:[3, 4, -7, 6, -10, 2, 9]
print(list4)
#打印结果:[2, 3, 4, 6, -7, 9, -10]

#降序
list5 = [3,4,6,2,9]
list6 = sorted(list5, reverse=True)
print(list5)
#打印结果:[3, 4, 6, 2, 9]
print(list6)
#打印结果:[9, 6, 4, 3, 2]

#函数可以自己写
def myLen(str):
    return len(str)
list7 = ['b333','a1111111','c22','d5554']
list8 = sorted(list7,key=myLen)#默认升序排序
print(list7)
#打印结果:['b333', 'a1111111', 'c22', 'd5554']
print(list8)
#打印结果:['c22', 'b333', 'd5554', 'a1111111']

Python 内置函数参考链接 官方文档
上一篇下一篇

猜你喜欢

热点阅读