赞
踩
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJ2Nu8iD-1600071235214)(…/img/chinahadoop.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v9UCleYI-1600071235218)(…/img/python.png)]
Python 是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。
Python与Java, C, C++并列为全球4大最流行语言. 从C到C++,到Java再到Python, 细节越来越少, 让开发者把更多的精力放在”做什么”, 而不是”怎么做”。
更多python语言介绍和入门可以参考资料《Python简介和入门》
%config ZMQInteractiveShell.ast_node_interactivity='all'
%pprint
Pretty printing has been turned OFF
%%writefile print_str.py
print("欢迎大家学习课程内容!")
Overwriting print_str.py
!python3 print_str.py
欢迎大家学习课程内容!
如以下标识符取名错误
for='chinahadoop.cn'
7a=8
str='小象学院'
我们可以使用=
建立名字与对象之间的关联,用del 名字
来解除这种关联
操作符及优先级如下:
第1名 - 函数调用、寻址、下标
第2名 - 幂运算 **
第3名 - 翻转运算符 ~
第4名 - 正负号
第5名 - *、/、%
第6名 - +、-
#算术运算符
a=100;b=3
a+b #加
a-b #减
a*b #乘
a/b #除
a//b #取商
a%b #取余
a**2 #平方
a**0.5 #开方
103 97 300 33.333333333333336 33 1 10000 10.0
#比较运算符
if a==b:
print ('a equal b')
if a!=b:
print ('a not equal b')
#逻辑运算符><>=,
if a>=50:
print('a is grater than 50')
#成员运算符in,not in
websiteUrl='chinahadoop.cn'
if '.net' not in websiteUrl:
print ('.net not in it')
a not equal b
a is grater than 50
.net not in it
#赋值
c = 1000
#多重赋值
#a=100;b=100
a=b=100
#多元赋值
#a=100;b=200
a,b,c=100,200,200
#交换赋值
a,b=b,a
print(a,b)
200 100
# 拓展知识 #unpack解包 l1=[1,2,3,4,5,'6'] a,b,*c,d=l1 print(a,b,c,d) #*号收集 a,*b,c=l1 print(a,b,c) #*号展开,针对序列 l1=[1,2,3,4] s1='chinahadoop.cn' [*l1,*s1] #*号展开,针对字典 d1={'name':'machine learning 5th','add':'BJ,SH,*'} [*d1],{**d1,'date':'2019-3-30'} # ,号放在最后的解包 l1=[[3,4,5]] a=l1 b,=l1 print(a,b)
1 2 [3, 4, 5] 6 1 [2, 3, 4, 5] 6 [1, 2, 3, 4, 'c', 'h', 'i', 'n', 'a', 'h', 'a', 'd', 'o', 'o', 'p', '.', 'c', 'n'] (['name', 'add'], {'name': 'machine learning 5th', 'add': 'BJ,SH,*', 'date': '2019-3-30'}) [[3, 4, 5]] [3, 4, 5]
#数值整型 a=100;b=200 #进制转换 a=0b0101001#bin() b=0o4#oct() c=0x28#hex() #浮点型 pi=3.1415 #科学计算法 c=5e13 print(c) #数字的正负无穷 #float('inf')正无穷 #float('-inf')负无穷 if 99999999999999999<float('inf'): print('you win!') #复数 a=4.3+22j type(a) #数值类型转换 a=4.48 b=8 int(a) # 保留n位小数四舍五入 round(pi,3)
50000000000000.0 you win! <class 'complex'> 4 3.142
##字符串型 单引号 双引号 三引号 #初始化及转义 str1='''AI''' str2='chinahadoop.cn' #访问,索引及切片访问 str2[-1] #str2[start:end:stride] #切片访问的特点:左闭右开[) #012345... str2[0:4] #从index为0取到index为4(不包括4) str2[1:] #从index为1到结尾 str2[:4] #从开头到index为4(不包括4) str2[0::2] #从index为0到结尾,每隔2-1=1个字符取一次 #格式化访问1 companyName='chinahadoop' str3='http://{}.cn' print(str3.format(companyName)) #格式化访问2 print("Company name is %s" %companyName) #格式化访问3 _='Python 3.6'#fstring only can be used under version 3.6 str4=f"fstring is new feature of {_}" str4 #查找与替换 str3.find('o') str3.replace('.cn','.net') #统计 str3.count('cn')
'n' 'chin' 'hinahadoop.cn' 'chin' 'ciaaopc' http://chinahadoop.cn Company name is chinahadoop 'fstring is new feature of Python 3.6' -1 'http://{}.net' 1
a=3
b=5
a<3
False
#列表[]:任意元素类型对象的序列
l1=['AI','chinahadoop.cn']
l2=[1,'china',l1,'机器学习集训营']
l2
[1, 'china', ['AI', 'chinahadoop.cn'], '机器学习集训营']
# 列表切片
l2[0] #第1个元素
l2[1] #第2个元素
l2[1:3] #左闭右开
l2[1:] #从index为1开始到结尾
l2[:3] #从index为0开始到index为2
l2[::2] #从最左开始每隔1个
1 'china' ['china', ['AI', 'chinahadoop.cn']] ['china', ['AI', 'chinahadoop.cn'], '机器学习集训营'] [1, 'china', ['AI', 'chinahadoop.cn']] [1, ['AI', 'chinahadoop.cn']]
# 列表追加
l2.append(['last', 'elem']) #追加1个元素
l2
l2.extend(['new', 'item']) #追加列表
l2
l2 + l1 #追加列表
[1, 'china', ['AI', 'chinahadoop.cn'], '机器学习集训营', ['last', 'elem']]
[1, 'china', ['AI', 'chinahadoop.cn'], '机器学习集训营', ['last', 'elem'], 'new', 'item']
[1, 'china', ['AI', 'chinahadoop.cn'], '机器学习集训营', ['last', 'elem'], 'new', 'item', 'AI', 'chinahadoop.cn']
# 列表删除元素
l2.pop() #返回最尾部元素,并删除该元素
l2.remove('china') #移除列表中的某个值的第一个匹配项,没有返回值
'item'
# 字符串列表的拼接与分割
l3 = ['I', 'love', 'China']
"_".join(l3) #用下划线拼接列表元素(需要是字符串)
a = "#".join(l3)
a
a.split("#") #用井号切分字符串生成列表
'I_love_China'
'I#love#China'
['I', 'love', 'China']
# 列表排序
my_list = [5,1,2,4,3]
my_list.sort() #对my_list排序,直接改变my_list
my_list
new_list = [5,1,2,4,3]
sorted(new_list) #对new_list排序,以返回值返回排序结果,并不改变new_list
new_list
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
[5, 1, 2, 4, 3]
# sorted高级用法
tmp_strs = ['aa', 'BBc', 'CCdd', 'zzmm']
sorted(tmp_strs) #按照字母序排序
sorted(tmp_strs, reverse=True) #按照字母序降序排序
sorted(tmp_strs, key=len) #根据key对元素做处理后的结果对原序列排序,这里的len是函数,返回字符串长度
sorted(tmp_strs, key=str.lower) #根据小写后的结果字母序排序
['BBc', 'CCdd', 'aa', 'zzmm'] ['zzmm', 'aa', 'CCdd', 'BBc'] ['aa', 'BBc', 'CCdd', 'zzmm'] ['aa', 'BBc', 'CCdd', 'zzmm']
#元组()tuple,只读列表
t1=(1,2,3,4)
type(t1)
#只读列表是真的只读吗?
t2=(1,2,3,[4,5,6])
t2[0]=11#报错
<class 'tuple'> --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-30-5a12797f04b9> in <module>() 4 #只读列表是真的只读吗? 5 t2=(1,2,3,[4,5,6]) ----> 6 t2[0]=11#报错 TypeError: 'tuple' object does not support item assignment
tup = ('physics', 'chemistry', 1997, 2000)
tup1 = (50,) #元组中只包含一个元素时,需要在元素后面添加逗号
tup[1:] #元组的切片拼接和list一样
(<class 'int'>, <class 'tuple'>)
#集合{}set:无序的不重复元素,集合中的对象,通常叫key
s1={1,1,1,2,3,4,5,2,4,234}
l2=[1,1,1,2,3,4,5,2,4,234]
set(l2)
{1, 2, 3, 4, 5, 234}
# 字典是另一种可变容器模型,且可存储任意类型对象。 # 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 my_dict = {'HanXiaoyang': 1234, 'Jason': 4567, 'David': 6789} #定义字典 ks = my_dict.keys() #取出所有的key ks vs = my_dict.values() #取出所有的values vs Hv = my_dict['HanXiaoyang'] #根据key取对应的value Hv Dv = my_dict.get('XiaoMing', 2345) #根据key去取value,如果key不存在返回默认值 Dv my_dict['HanXiaoyang'] = 7890 #改变字典中key对应的value值 my_dict flag = 'DaDa' in my_dict #判断是否有某个key flag # 遍历字典元素 for key in my_dict: print(key,my_dict[key])
dict_keys(['HanXiaoyang', 'Jason', 'David']) dict_values([1234, 4567, 6789]) 1234 2345 {'HanXiaoyang': 7890, 'Jason': 4567, 'David': 6789} False HanXiaoyang 7890 Jason 4567 David 6789
# 注意,字典是一种键值对数据结构,本身是无序的,如果需要顺序,可以用OrderedDict
od1=OrderedDict()#按主键首次插入顺序进行排序
od1['a']=7
od1['z']=8
od1['b']=9
od1
a='小象学院'#statement通常为赋值语句
b=100
c=a
#值、变量和运算符共同组成的整体我们将其称为表达式。通常有值表达式、变量表达式、计算表达式、字符串表达式,
b,b+100,a+' is amazing',__builtins__
exec('a=5')
a
b=3
eval('a+b+5')
13
#### 判断:if, if else ,if elif与三元表达式 #单if age=88 if age<18: print('teenage') #if else elif if age<18: print('teenage') else: print('adult') #if elif if age<18: print('teenage') elif age >18 and age <60: print('adult') elif age>60: print('elder') #三元表达式 'a' if age>50 else 'b'
#For循环 str1='小象学院机器学习' for item in str1: print(item) print("") #While循环 countnum=1 while(countnum<5): print(countnum) countnum+=1 print("") #### break与continue循环控制 i=0 while True: i+=1 if i==3: continue if i>5: break print(i)
小 象 学 院 机 器 学 习 1 2 3 4 1 2 4 5
#列表推导式:从一个列表中生成一个新的列表,简化了循环的写法
l1= [x+1 for x in range(30) if x%3==0] #新的list中的元素,来源于从0-29这个list中所有整除3的元素+1
l1
[1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
l1=[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
l2=iter(l1)
l2.__next__()
0
#可迭代对象Iterable:可以被for循环的对象统称为可迭代对象Iterable,list,str,dict这些都是可迭代类型 #迭代器Iterator:可以被next调用的迭代器。 #next(l1) #TypeError: 'list' object is not an iterator #使用iter将一来个可迭代对象变为迭代器 l1=iter(l1) next(l1),next(l1) #生成器Generator:首先是一个迭代器,然后其内容是按需生成 #列表是一次性生成,缺点是当内容过大时会占用大量内容,那能不能用到多少生成多少呢? #Python里一边循环一边计算(惰性计算)的迭代器称为生成器(Generator) #1.直接从列表表达式生成 g1= (x**2 for x in range(30) if x%2==0) type(g1) next(g1),next(g1),next(g1),next(g1),g1.__next__(),g1.__next__() #2.函数生成,与yield关键字 def g2_func(n): for i in range(n): yield i**2 g2=g2_func(7) next(g2),next(g2),g2.__next__(),g2.__next__(),g2.__next__(),g2.__next__() #yield from/子迭代器,后面直接是可迭代对象。 def yield_from_iter(iter_object): yield from iter_object y1=yield_from_iter('China') y1.__next__(),next(y1)
#一个出现异常的例子
a=12
b=0
print(a/b)
print(12/6)
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-49-10dfecf82e87> in <module>()
2 a=12
3 b=0
----> 4 print(a/b)
5 print(12/6)
ZeroDivisionError: division by zero
异常同样也是Python对象,表示一个在程序执行过程中发生了影响正常运行时而产生的一个事件(产生一个traceback.)
|常见异常|说明|
|—
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。