大数据之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入门语法基础的主要内容,如果未能解决你的问题,请参考以下文章

python之小白入门起飞篇

[Python入门到精通系列]-Python基础入门之函数

[Python入门到精通系列]-Python基础入门之函数

[Python入门到精通系列]-Python基础入门之函数

人生苦短 我学python之OldBoy21天入门_day01·Python基础语法

python大数据挖掘系列之基础知识入门 知识整理(入门教程含源码)