用Python进行数据挖掘的前奏----了解Python的语法

基本知识

# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)
  • #开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
  • 使用4个空格的缩进。IDE很难像格式化Java代码那样格式化Python代码。
  • Python程序是大小写敏感的,如果写错了大小写,程序会报错。

输入和输出

print('1024*1024 =', 1024*1024)
name = input('please enter your name: ')
print('hello', name)
print('a', 'b', 'c')

逗号会输出为空格

整数

  • Python可以处理任意大小的整数
  • 用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示
  • /代表精确除,就算两个整数,用/运算,结果也是浮点数
  • ‘//’代表取整
  • %代表取余

浮点数

  • 对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5
  • 浮点数运算则可能会有四舍五入的误差。

字符串

  • 字符串是以单引号'或双引号"括起来的任意文本
  • 如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识
  • 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义
  • 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用'''...'''的格式表示多行内容

在控制台中:

在编辑器中:

布尔值

  • 一个布尔值只有TrueFalse两种值
  • 布尔值可以用andornot运算

空值

  • 空值是Python里一个特殊的值,用None表示。

变量

  • 变量名必须是大小写英文、数字和_的组合,且不能用数字开头
  • Python中变量不需要指定类型,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言。
  • 当我们写:
a = 'ABC'

时,Python解释器干了两件事情:

  • 在内存中创建了一个'ABC'的字符串;
  • 在内存中创建了一个名为a的变量,并把它指向'ABC'
    也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据

常量

  • 在Python中,通常用全部大写的变量名表示常量

编码

  • 在最新的Python 3版本中,字符串是以Unicode编码的
  • 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
  • Python的字符串类型是str
  • Python对bytes类型的数据用带b前缀的单引号或双引号表示
  • 如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法
  • 要计算str包含多少个字符,可以用len()函数,换成byteslen()函数就计算字节数

当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

格式化

  • 在Python中,采用的格式化方式和C语言是一致的,用%实现, 常见的占位符有%d%f%s%x ,在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
'Hello %s' %'world'

注意:中间不用加,,和C语言不一样

List(列表)和Tuple(元组)

Python内置的数据类型:List(列表)和Tuple(元组)。

  • list是一种有序的集合,可以随时添加和删除其中的元素,用[]表示。
  • 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,用()表示。

列表相关的函数:

函数功能
cmp(a,b)比较两个列表/元组的元素
len(a)列表/元组元素个数
max(a)返回列表/元组元素最大值
min(a)返回列表/元组元素最小值
sum(a)将列表/元组中的元素求和
sorted(a)对列表的元素进行升序排序

列表本身的方法:

函数功能
a.append(1)将1添加到列表a末尾
a.count(1)统计列表a中元素1出现的次数
a.extend([1,2])将列表[1,2]的内容追加到列表a的末尾中
a.indext(1)从列表a中找到第一个1的索引位置
a.insert(2,1)将1插入列表a的索引为2的位置
a.pop(1)移除列表a中索引为1的元素

判断与循环

if 条件1:
    语句1
elif 条件2:
    语句2
else:
    语句3

python一般不用{},也没有end语句,它是用缩进对齐作为语句的层次标记。同一层次的缩进量要一一对应,否则报错。

循环用for...in...或者while

计算从0到100,包头不包尾:

sum = 0
for x in range(101):
    sum = sum + x
print(sum)

计算100以内所有奇数之和:

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
L = ['Bart', 'Lisa', 'Adam']
for x in L:
    print('hello,%s!' %x)

Dictionary(字典)和Set(集合)

dict相当于Map :

注意:dict内部存放的顺序和key放入的顺序是没有关系的。

set和数学上的集合基本上是一致的,它和list的区别在于: 
 1. 它的元素是不重复的,而且是无序的。
 2. 它不支持索引。
一般我们通过{}或者set()函数创建一个集合。

s = {1, 2, 2, 3} #注意2会自动去重,得到{1, 2, 3}
s = set{[1, 2, 2, 3]} #同样,它将列表转换为集合,得到{1, 2, 3}

函数

Python用def自定义函数

def add1(x):
    return x+2
print(add1(2))#此时结果是4

函数返回值可以是多个:

def add2(x, y):
    return x+3, y+3
a, b = add2(1, 2)
print(a, b) #此时a=4,b=5

Python支持用lambda对简单的功能定义“行内函数”:

f = lambda x : x + 2
print(f(3))#此时结果是5

x代表形参, 3代表传入的实参

函数式编程

主要由几个函数的使用构成:lambda()、map()、reduce()、filter(),后三个参数都有两个,一个是函数,一个是序列

map()的使用,用于逐一遍历:
  • 问题:有一个列表a=[1, 2, 3],要给列表中的每个元素加2得到一个新列表
  • 普通方式:b = [i+2 for i in a]
  • map()方式:
a=[1, 2, 3]
b = map(lambda x : x+2, a)
b = list(b)#在python3.x中需要这一步,因为在3.x中,map函数只是一个待运行的命令容器,只有其他函数调用它时才返回结果

练习题目:把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字

L1 = map(lambda name : name[0].upper()+name[1:].lower(), ['adam', 'LISA', 'barT'])
L1 = list(L1)#在python3.x中需要这一步,因为在3.x中,map函数只是一个待运行的命令容器,只有其他函数调用它时才返回结果
print(L1)

x相当于函数的参数,a代表传进去的实参

reduce()的使用,用于递归计算:
  • 问题:计算n的阶乘
  • 普通方式:
  • reduce()方式:
from functools import reduce#在3.x中需要引入reduce
n = 10
m = reduce(lambda x,y : x*y, range(1, n+1))
print(m)#结果为3628800

练习题目:请编写一个prod()函数,可以接受一个list并利用reduce()求积

from functools import reduce
def prop(list):
    return reduce(lambda x, y : x*y, list)
sum = prop([1, 2, 3, 4]) 
print(sum)
filter()的使用,用于筛选列表中符合条件的元素
b = filter(lambda x : x > 5 and x < 8, range(10))   
b = list(b)#在python3.x中需要这一步,理由同map
print(b)#结果为[6, 7]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值