大数据之Python入门语法基础
Posted 梦子mengy7762
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之Python入门语法基础相关的知识,希望对你有一定的参考价值。
一、python特点及简介\\
python在编程语言中的排名
4位
简洁优雅
同scala语言
完成同样一个任务
c语言 1000行
java 100行
scala/python 20行
面向过程及面向对象的语言
同scala语言
wordcount
MapReduce
基于spark使用scala进行wordcount
sc.textFile(“hdfs://nn:8020/data/input/wc.txt”) // RDD
.flatMap(_.split(" ")) //Array[String] -Array[hadoop,hadooo,hive,spark,spark,hive, hadoop]
.map((_,1)) //Array[(String,Int)]
.reduceByKey((+)) //Array[(String,Int)] – Array[(hadoop,3),(hive,2),(spark,2)]
.savedAs(“hdfs://”)
.map(x=>x.split(" ")) //Array[Array[String] ]
hadoop hadooo hive spark
spark hive hadoop
有强大的基础代码库及种类用途繁多的第三方库
基础代码库覆盖了网络、文件、GUI、数据库等
第三方库
使用python开发一个邮件客户端:
从零开始 --2年
使用python的基础代码库及第三方库 – 2天
requests lxml
pip install requests lxml
requests.get(url)
跨平台可移植性
绝大多数的python程序不做任何改变就可以在各类主流平台运行
window linux mac
因为各个平台上有针对python代码的解释器
python是一种解释型语言 (shell同样)
编程语言一般 解释型语言 、编译型语言
c c++ 编译型语言:
代码会提前被编译成机器可以执行运行的机器语言-window .exe
代码一次编译以后可以多次直接执行(不需要再次进行编译),执行速度快,效率高
编译后的语言与特定平台有关,可移植性不高
python shell js解释型语言:
解释型语言不会提前被编译(翻译成机器可以直接执行的语言)
只有在执行这些代码时才会被翻译
并且执行一次就需要被翻译一次,执行速度慢,效率低
因为只要平台提供了相应的解释器,就可以直接运行代码,所以方便程序的移植
解释器的类型:
CPython解释器
官方默认,由c语言开发的
Jython解释器
在java平台上运行的解释器
java是混合型语言:
java程序在执行前也有一次编译的过程
变编译成字节码文件(机器不能直接运行的)
由JVM将字节码文件翻译成机器可以直接执行的语言
python的缺点:
运行速度慢
不能加密
是解释型语言的共同特点
发布程序或应用时必须将源码发布出去
python应用:
写脚本进行日常的运行或任务的管理
应用或小程序的开发
做网站开发
豆瓣 web
Google部分
爬虫
代码简洁
有很多针对爬虫的第三方库,为爬虫提供了一个良好的接口
抓取数据后的处理同样有很多的第三方库,处理比较方便快捷
spark的开发
python – 50%
scala
java
二、python的安装及使用
python 2.x 3.x 不兼容
python3.5.2 --上课使用
python3.5.0
兼容性问题:
python版本之间的兼容性问题
python与第三方库之间的版本兼容性问题
python3.5.2 --上课使用
https://www.python.org/ --官网
http://mirrors.sohu.com/python/ --国内镜像源
window平台安装:
运行 exe程序
在add python to path 打钩
定制安装-》next-》选择安装路径在c:\\pyhton352
打开cmd ,运行python-》进入到python的交互命令行
linux平台安装:
自带2.6版本的python
不能卸载2.6
可以与3.5版本共存
yum -y install readline-devel.* 先使用root用户安装readline模块
上传并解压python源码包 – 使用普通用户
$ tar zxvf Python-3.5.2.tgz
/opt/modules/Python-3.5.2 是python的源码包主目录
检查编译环境并配置python的安装路径
$ ./configure --prefix=/usr/python
编译安装
make && make install --5分钟左右 使用root用户
/usr/python 是python的安装目录
配置python3的环境变量
vi /etc/profile
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PYTHON_HOME=/usr/python
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin:$PYTHON_HOME/bin
source /etc/profile
python3 任意路径下执行会进入到python3.5.2交互命令行
python 会进入到python2交互命令行
在linux上执行一段python代码
vi test.py
print(‘hello!!~~~~’)
python3 test.py
另外一种写法:
vi test.py
#!/usr/bin/env python3 或 #!/usr/python/bin/python3
print(‘hello!!~~~~’)
chmod u+x test.py
./test.py
最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
三、pycharm的安装使用\\
1、常用的python的集成开发环境
pycharm
是捷克的一家公司开发 – jetbrains
scala常用的集成开发工具 intellij也是该公司开发
eclipse + pyDev(插件)
2、pycharm的安装
加入python 文件的头信息-模板
#!/usr/bin/env python3
为了告诉linux系统,这是一个python3可执行脚本程序
在window下运行时会自动忽略该信息
-- coding:utf-8 --
告诉编译器,在读取该脚本文件时以UTF-8编码读取
四、python语法要点:
1、注释、变量和数据类型
注释:
代表可以进行单行
‘’’ ‘’’ 三引号可以进行多行注释
a = 10
b = “str1”
c = None
d = True
a, b, c, d = 1, 2, “name”, False
print(a, b, c, d )
2、数学运行符
a = 10
c = 3
d = 5
print(a / d)
print(a % c) # 取余
print(a // c) # 取商
print(a ** c) # 乘方
a += 5 # 支持 +=或-=,不支持 ++ 或–
print(a)
3、其他运算符
比较运算符和逻辑操作符
比较运算符返回都是布尔类型
逻辑操作符
not – 非
and – 与
or – 或
&& || --python不支持
a = 10
c = 15
d = 20
print(not a > c)
print(a > c and a < d)
print(a > c or a < d)
成员运算符
in \\ not in
返回结果也是布尔类型
list = [12, 33, 44, 77, 11]
print(12 in list)
print(13 not in list)
身份运算符
is 、not is
两个变量指向的对象是否为同一个
list = [12, 33, 44, 77, 11]
list1 = list
list1.append(88)
print(list1)
print(list1 is list)
4、条件判断 if else
python使用缩进的方式来组织管理代码块
python特有的代码规范
当一条语句以冒号结尾时,下面缩进的语句代表了同一个代码块
缩进的数量要一致,一般用4个空格
案例一:
a = 60
if a > 100:
print(‘big number’)
print(a)
elif a > 50:
print(‘middle number’)
print(a)
else:
print(‘small number’)
print(a)
python中没有switch case 语句,使用if elif else 替代
案例二:
在python中 0 None 空的元组、列表、字典都会被评估为false
a = “” # None 0 () [] {}
if a:
print(" a is ture")
else:
print(" a is false ")
5、循环while和遍历for
while条件判断循环操作
真正意义上的循环
有条件判断并且条件判断为false时停止循环
for 对一个可迭代对象中的每个元素进行遍历操作
for一般作用在list 元组 集合 字典
只要是可迭代对象,无论有无下标都可以进行遍历
案例一:
a = 10
while a < 20:
print(a)
a += 1
案例二:
list = [11, 22, 44, 9, ‘tom’, None]
for i in list:
print(i)
案例三:
list = range(1, 10) //python提供了range函数帮忙我们构造一个整数序列,是一个可迭代对象
for i in list:
print(i)
list = range(1, 10, 2) //构造一个步长为2的整数序列
for i in list:
print(i)
6、跳出循环break continue
list = range(1, 10)
for i in list:
if i % 2 == 0:
continue //跳出本次循环进入下次循环
else:
print(i)
for i in list:
if i % 2 == 0:
break //终止循环
else:
print(i)
for i in list:
if i % 2 == 0:
break
else:
print(i)
else:
print(‘ok’) //不会执行,因为上面循环为非正常退出循环
for i in list:
if i % 2 == 0:
continue
else:
print(i)
else:
print(‘ok’)//会执行,因为上面循环为常退出循环
五、python中的内置数据结构
1、列表
python中的列表类似数组
列表可以存储不同的数据类型的元素,而数组只能是相同类型
列表可以动态扩展长度,添加、修改或删除,删除元素后空间会立即释放
使用[]表示一个列表
1)基本操作:
a = [22, 33, ‘hello’, None, True]
print(a[3]) # 列表的角标从0开始
print(a[-1])
a[0] = 55 # 可以进行更新操作
print(a)
a.append(88)
print(a)
a.extend([99, 110])
print(a)
a.insert(1, 98)
print(a)
a.pop()
print(a)
a.pop(1)
print(a)
del a[0]
print(len(a))
2)列表的切片
a = [55, 33, ‘hello’, None, True, 88, 99]
print(a[0:3])
print(a[:3])
print(a[-3:-1])
print(a[-3:]) # 右边为-1是可以省略,但是结果中会包含-1角标的元素
print(a[2:333])
list1 = range(0, 100)
print(type(list))
list2 = list(list1)
print(type(list2))
print(list2[10:20])
print(list2[10:20:3]) # 3相当于步长
print(list2[::10])
print(list2[:])
list3 = list2[:]
3)其他常用操作方法
reversed颠倒列表中的元素
list = [22, 44, 11, 55, 88]
print(reversed(list))
for i in reversed(list):
print(i)
sorted对元素进行排序,默认是升序
print(sorted(list))
sum求和
print(sum(list))
4)列表生成式(列表解析式)
如果得到一个1到100的列表比较容易
list1 = list(range(1, 100))
如果得到一个1到100平方后的元素的列表
方法1:
list = []
for x in range(1, 100):
list.append(x * x)
print(list)
方法2:使用列表生成式
list = [x * x for x in range(1, 100) ]
print(list)
list = [x * x for x in range(1, 100) if x % 2 == 0] //只取1-100中的偶数进行平方
list = [x * x if x % 2 == 0 else x for x in range(1, 100)]
//1-100中的偶数进行平方,奇数是其本身
print(list)
5)生成器 generator
列表生成式中的元素都是直接经过计算全部显示出
生成器是只保存了生成式的计算规则(算法)
生成器并没有直接计算出全部元素的值
而是每次被调用时才会进行计算
如果创建生成器
方法1:
list = [x * x for x in range(1, 100)] //列表生成式返回的类型是列表
generator = (x * x for x in range(1, 100)) //返回的类型为生成器
print(list)
print(generator)
print(type(list))
print(type(generator))
最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
方法2:
复杂的算法使用列表生成式无法实现,使用函数来实现
list = [1, 2, 3, 4, 5]
def getSquare(x):
for i in x:
squ = i * i
print(squ)
getSquare(list)
list = [1, 2, 3, 4, 5]
def getSquare(x):
for i in x:
squ = i * i
yield squ //如果一个函数中出现了yield,表示该函数是一个生成器
print(getSquare(list))
生成器的取值方法:
方法1: 通过next取值
def getSquare(x):
for i in x:
squ = i * i
yield squ
g=getSquare(list)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
方法2:通过for循环遍历\\
from collections import Iterable //导入Iterable模块
print(isinstance(g,Iterable)); //通过isinstance方法判断g是否为一个可迭代对象
for i in g:
print(i)
以上是关于大数据之Python入门语法基础的主要内容,如果未能解决你的问题,请参考以下文章