Python 基础详解(二)
作者:五分钟学大数据
- 2022 年 7 月 15 日
本文字数:4163 字
阅读完需:约 14 分钟
11. Python 的字典的操作
key-value
创建补充
fruit = {"apple": 1, "pear": 2, "banana": 3}
print(fruit)
print(type(fruit))
d1 = dict(zip(["Apple", "pear", "bababa"], [1, 2, 3]))
print(d1)
print(d1.keys())
print(d1.values())
print(d1.items())
d2 = dict(Apple=1, Pear=2, Bnanna=3)
print(d2)
#1-key是需要具备什么结构的才可以充当?答案:可Hash的
print(hash("apple"))
print(hash("pear"))
# print(hash(["pear"]))#TypeError: unhashable type: 'list'
print(hash(("1000")))
ssss_ = {"apple": 1, "banana": 2, ("ssss"): 3}#TypeError: unhashable type: 'list'
print(ssss_)
#2-key是不可以重复的部分,如果重复的key需要理解业务含义
pear_ = {"Apple": 1, "pear": 2, "banana": 3, "pear": 100}
print(pear_)
# del ssss_
# print(ssss_)
pear_.clear()
print(pear_)
复制代码
函数的详解
# 六、字典内置函数&方法
d1 = dict(zip([1, 2, 3], ["apple", "pear", "banana"]))
print(d1)
# Python字典包含了以下内置函数:
# 1、cmp(dict1, dict2):比较两个字典元素。---在3中去掉了方法
# 2、len(dict):计算字典元素个数,即键的总数。
print(len(d1))
# 3、str(dict):输出字典可打印的字符串表示。
print(str(d1))
# 4、type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。
# Python字典包含了以下内置方法:
# 1、radiansdict.clear():删除字典内所有元素
# 2、radiansdict.copy():返回一个字典的浅复制
# 3、radiansdict.fromkeys():创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
# 如:print "fromkeys",dict_2.fromkeys(dict_2,10)
# 4、radiansdict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值
print(d1.get(1))
# 5、radiansdict.__contains__(key):如果键在字典dict里返回true,否则返回false
# 6、radiansdict.items():以列表返回可遍历的(键, 值) 元组数组
# 7、radiansdict.keys():以列表返回一个字典所有的键
# 8、radiansdict.setdefault(key, default=None):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
# 9、radiansdict.update(dict2):把字典dict2的键/值对更新到dict里
d1.update({"orange":234,"ooo":45})
print(d1)
# 10、radiansdict.values():以列表返回字典中的所有值
复制代码
12. set 集合
集合满足无序性、唯一性、确定性
set1 = {1, 2, 3, 5, 7, 10}
print(set1)
#集合的增加
set1.add("apple")
print(set1)
#集合的删除
set1.remove("apple")
print(set1)
#集合的删除
set1.discard(10)
print(set1)
#集合的更新
set1.update({9,8,7})
print(set1)
#集合运算
# 集合的交集
set3={1,2,3,6}
set2={9,8,7,6}
print(set2 & set3)
print(set2.intersection(set3))
# 集合的并集
print(set2 | set3)
print(set2.union(set3))
# 集合的补齐
print(set2 -set3)
print(set2.difference(set3))
复制代码
13. 列表表达式
求解满足条件的列表
[表达式 for 变量 in 可迭代的对象中 if 条件判断]
# 列表表达式 [表达式 for 变量 in 可迭代的对象中 if 条件判断]
# 目的:求解满足条件的列表
# x*x]
result = []
for x in range(10):
result.append(x * x)
print(result)
# 等价于
result1 = [x * x for x in range(10) if x != 0]
print(result1)
# 等价于
# map函数的用法,就是将函数应用在序列上面去
def add(x):
return x * x
r1 = map(add, range(10))
print(list(r1))
# 等价于map(_.split("")).map(x=>x*2)
r2 = list(map(lambda x: x * x, range(10)))
print(r2)
# 1.使用列表推到式实现嵌套列表的平铺(两个for循环)
vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(vec)
# 等价
result3 = []
for i in vec:
for j in i:
result3.append(j)
print(result3)
# 等价
result4 = [j for i in vec for j in i]
print(result4)
# 等价
# def re(*vec):
# for i in vec:
# result3.append(i)
# return result3
# print(list(map(re,vec)))
# 2.过滤不符合条件的元素
vec1 = [1, 2, 3, 4, -1, -2, -3, -10, 0]
result5 = []
for i in vec1:
if i > 0:
result5.append(i)
print(result5)
# 等价于
result6 = [x for x in vec1 if x > 0]
print(result6)
# 等价于
def sub(x):
if x > 0:
return x
else:
return -1
print(list(map(sub, vec1)))
# 3.列表推导中使用多个循环实现多序列元素任意的组合,并过滤元素
result7 = []
for i in range(10):
for j in range(10):
if i != j:
result7.append((i, j))
print(result7)
# 等价于
result8 = [(x, y) for x, y in zip(range(10), range(10))]
print(result8)
result9 = [(x, y) for x in range(10) for y in range(10) if x != y]
print(result9)
print(result9==result7)
#4.实现列表推到式实现矩阵转置
vec3=[[1,2,3],[4,5,6],[7,8,9]]
print(list(range(3))) # 012
print(list(range(0,3))) # 012
print(list(range(0,3,1))) # 012
result10=[[row[i] for row in vec3] for i in range(3)]
print(result10)
#zip
print(list(zip([1,2,3],[4,5,6],[7,8,9])))
print(list(map(list,zip([1,2,3],[4,5,6],[7,8,9]))))
##5.使用列表推导生成100以内的所有素数
#10-----1) 2---9/10 2)2---5(2/10) 3)2----sqrt(10)
sushu = [p for p in range(2, 101) if 0 not in [p % q for q in range(2, p)]]
print(sushu)
import numpy as np
sushu1 = [p for p in range(2, 101) if 0 not in [p % q for q in range(2, int(np.sqrt(p))+1)]]
print(sushu1)
from functools import reduce
def add(x,y):
return x+y
result10 =reduce(add, range(5))
print(result10)
seq1 = ['foo', 'x41', '?1', '***']
print(list(filter(lambda x:x.isalnum(),seq1)))
print(list(filter(lambda x:x!=0,[1,2,3,0,0,4,0,5])))
print(list(filter(None,[1,2,3,0,0,4,0,5])))
#If function is None, return the items that are true
list2=["apple","pear","ok","banananna"]
list2.sort(key=lambda x:len(str(x)),reverse=True)
print(list2)
复制代码
14. 字典表达式/生成器表达式
生成器表达式
# 元祖表达式 (表达式 for 变量 in 可迭代的对象中 if 条件判断) 惰性求值
# x*x
re1 = (x * x for x in range(10))
print(re1.__next__())
print(re1.__next__())
print(re1.__next__())
print(list(re1))
print(list(re1))
复制代码
字典表达式
# 字典表达式 {key:value for 变量 in 可迭代的对象中 if 条件判断}
A=["a","b","c","d"]
V=[1,2,3,4]
dict1 = {key: value for key, value in zip(A, V)}
print(dict1)
print(type(dict1))
from collections import OrderedDict
order = OrderedDict()
order["apple"]=100
order["banana"]=200
print(order)
print(ord("A"))
print(ord("a"))#ASCII
复制代码
基本数据结构和表达式
15. 函数的结构
函数的参数和返回值
# -*- coding: utf-8 -*-
# @Time : 2019/11/10 16:59
# @Author : time
# @Email : load
# @File : 19.0pythonFunctions.py
# 函数:函数的参数+函数的返回值
# 1-没有参数没有返回值
def sayHello():
print("Hello"*5)
sayHello()
sayHello()
sayHello()
sayHello()
# 2-没有参数有返回值
def syaHi():
return "Hello "*5
syaHi()
syaHi()
syaHi()
# 3-有参数没有返回值
def addThreeNumber(a,b,c):
print(a+b+c)
# 4-有参数有返回值
def addThreeNumber1(a,b,c):
return a+b+c
X=60
def showNumber(X):
print("current number is:",X)
X=100
print("change number is:",X)
showNumber(X)
print("Final X value is:",X)
Y=100
def showNumber1():
global Y
print("current Y value is:",Y)
Y=200
print("change Y is:",Y)
showNumber1()
print("Final Y is:",Y)
if __name__ == '__main__':
addThreeNumber(1, 2, 3)
number_ = addThreeNumber1(1, 2, 3)
print(number_)
复制代码
函数的参数
#默认参数
def SayHello(str="hhh",times=12):
print(str*times)
SayHello("Hello",10)
SayHello("Hello")
#关键字参数
def AddThreeNumber(a,b,c=10):
print(a+b+c)
AddThreeNumber(1,2,3)
AddThreeNumber(c=1,b=2,a=3)
AddThreeNumber(a=1,b=2)
#变长参数
def printFunctions(fparamters,*tuples1,**dict1):
print("paramberts",fparamters)
print("tuples1:",tuples1)
print("dict1:",dict1)
printFunctions(1,2,3,"apple","pear",name="Zhsngan",age=12)
vec=[[1,2,3],[4,5,6],[7,8,9]]
print(*vec)
print(list(zip([1,2,3],[4,5,6],[7,8,9])))
print(list(zip(*vec)))
vec1=[1,2,3]
print(*vec1)
def addThreeNumber(a,b,c):
print(a+b+c)
addThreeNumber(*vec1)
def demo1(*p):
print(p)
demo1(1,2,3)
demo1(1,2,3,34)
def demo2(**p):
for item in p.items():
print(item)
demo2(x=1,y=2,z=3) #key和value形式
复制代码
lambda 表达式
# 语法:lambda 变量:表达式
# x*x
#lambda匿名函数---没有名字
g = lambda x: x * x
print(g(10))
x_x = (lambda x: x * x)(10)
print(x_x)
#map
m = list(map(str, range(10)))
print(m)
print(type(m))
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 4
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/978ea50489e50d7bc45e3e8f0】。文章转载请联系作者。
五分钟学大数据
关注
InfoQ签约作者 2020.11.10 加入
文章首发于公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术
评论