机器学习语言必备-Python语言入门(二)
1.函数详解
-
函数分为4中类型
- 根据参数和返回值进行判断
- 没有返回值没有参数
- 有参数没有返回值
- 没有返回值有参数
- 有参数有返回值的
- 根据参数和返回值进行判断
-
全局变量和局部变量
- global
#函数有几种类型:
#1.函数的返回值
#2.函数的参数
#无返回值无参数
def repeatString():
print("helloWorld\t"*5)
repeatString()
repeatString()
#有返回值没有参数
def repeatString():
return "Hello"
output=repeatString()
print(output)
#没有返回值有参数
def addThreeNumwer(a,b):
print(a+b)
addThreeNumwer(1,2)
#有返回值有参数
def addThreeNumber1(a,b):
return a+b
print(addThreeNumber1(1,2))
#全局变量和局部的变量
X=60
def showValue(X):
print("Current X values is :",X)
X=100
print("Change X values is:",X)
showValue(X)
print("Final X value is:",X)
Y=60
def showValueY():
global Y # 将Y设置为全局变量
print("current values result is:",Y)
Y=100
print("change values result is:",Y)
showValueY()
print("Final Y result is:",Y)
2.函数详解-参数
- 参数
- 默认参数
- 默认参数需要注意他的顺序
- 关键字参数
- 关键字参数可以调换顺序,但是需要明确指明具体参数名字
- VarArgs参数
- * 表示的是tuple或列表
- ** 表示的是dict
- zip重述
- 默认参数
# 默认参数
# 非默认参数必须在最后
def showNumber(x,y=1,z=1):
print(x+y+z)
showNumber(1,1,1)
# 关键字参数
def addThreeNumber(a,b,c=1):
print(a+b+c)
addThreeNumber(1,2,3)
addThreeNumber(a=1,b=2,c=3)
addThreeNumber(c=3,a=1,b=2)
addThreeNumber(a=1,b=2)
# VarArgs参数
#* 表示可迭代的对象---元祖或列表
#**表示的是字典--key:value
def printFunction(fparameters,*tuple1,**dict1):
print(fparameters)
print(tuple1)
print(dict1)
printFunction(1,2,3,4,5,"okok",age="12",name="zhangsan")
# 输出结果如下
# 1
# (2,3,4,5,"okok")
# {'age':12,'name':'zhangsan'}
vec=[[1,2,3],[4,5,6],[7,8,9]]
print(list(map(list,zip(*vec))))
print(list(map(list,zip([1,2,3],[4,5,6],[7,8,9]))))
#4.传递参数时的序列解包
def demo3(a,b,c):
print(a+b+c)
seq=[1,2,3]
demo3(*seq)
tup=(1,2,3)
demo3(*tup)
3. 函数详解-Lambda函数
- lambda函数—匿名函数
- 语法:
lambda 变量:表达式
- 平方:lambda x:x*x,可以在其中跟上默认参数,如果直接想输出的话直接使用括号进行输出即可
- lambda函数需要结合map函数使用,直接将lambda函数应用于可迭代对象或序列上
- 了解sort函数和lambda结合的形式
# 语法:lambda 变量:表达式
# x*x
#lambda 匿名函数
g=lambda x:x*x
print(g(9))
#三个数字的之和
g1=lambda x,y,z=0:x+y+z
print(g1(1,1,1))
#直接输出结果
print((lambda x,y,z=0:x+y+z)(1,2,3))
#lambda函数直接用于map、reduce、filter函数
addNumber=list(map(lambda x,y,z:x+y+z,range(5),range(5),range(5)))
print(addNumber)
data=list(range(20))
print(data)
import random
random.shuffle(data)
print("shuffle data:",data)
print((lambda x:x)(data)) #[19, 16, 9, 17, 14, 12, 10, 3, 4, 8, 0, 2, 7, 13, 11, 1, 15, 6, 18, 5]
data.sort(key=lambda x:x)
print(data)
print("="*100)
print((lambda x:len(str(x)))(data)) #[19, 16, 9, 17, 14, 12, 10, 3, 4, 8, 0, 2, 7, 13, 11, 1, 15, 6, 18, 5]
data.sort(key=lambda x:len(str(x))) #使用lambda表达式指定排序规则
print(data)
data.sort(key=lambda x:len(str(x)),reverse=True)
print(data)
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4.Python控制语句详解
- if_elif_else条件控制
- 条件判断
#猜数字游戏
number=100
guessNumber=int(input("Please input your number:"))
if guessNumber == number:
print("Wow,you guess number is right!")
elif guessNumber > number:
print("Your guess number is larger than before!")
else:
print("Your guess number is smaller than before")
- while循环
- 在不确定次数的时候使用while循环
#猜数字游戏
number=100
while True:
guessNumber=int(input("Please input your number:"))
if guessNumber == number:
print("Wow,you guess number is right!")
break
elif guessNumber > number:
print("Your guess number is larger than before!")
continue
else:
print("Your guess number is smaller than before")
continue
- for循环
- 常用于迭代可迭代的对象,如列表、元祖等
# 在Python2中使用Python3的语法可以这样导包
from __future__ import print_function
for i in range(10):
print(i,end="") # 没有空格
print()
for i in [1,2