在网易云课堂上参与了Python学习的课,竟然有1000+个视频。花了几天时间,已经看完了前100个Python基本语法入门的视频。
整理一下目前学到的知识。
1 学习环境
- Python
- Pycharm
- Anaconda
学习这部分基本语法都是使用Python自带的IDLE。
2 变量,算术运算符,赋值运算符,布尔型运算符,比较运算符(and,or,not)
Tips:
赋值运算时:
x,y,z=1,2,3
可以快速赋值。price+=2
或price-=2
和price=price+2
意义相同。
3 整数,浮点数,字符串,类型转换,字符串方法
Tips:
- type()查看数据类型
'I\'m learning Python!'
其中的斜杠可以将’抵消。- 字符串支持乘法和加法,不支持除法和减法。
First_word='Hello' Second_word='World' print(First_word+' '+Second_word)
- 常用函数len()
- int(True)返回值是1,false是0
- 字符串方法:
- islower():判断是否都为小写
- count(‘o’):计算字符串中出现’o’的次数
- find(‘o’):寻找字符串中’o’出现的位置,空格计算在内,且初始位为0
4 列表及列表函数(list)
4.1 列表索引
A_list_of_things=['Hello',1,2,3,4,True] #第一个值,'Hello' print(A_list_of_things[0]) #最后一个值,True print(A_list_of_things[-1]) print(A_list_of_things[len(A_list_of_things)-1]) #列表长度,6 len(A_list_of_things)
4.2 列表切片
#输出第2个到第3个元素,切片包左不包右 A_list_of_things[1:3] #从头输出到第3个元素 A_list_of_things[:3] #从第4个元素开始输出 A_list_of_things[3:] #判断元素是否在列表中 '5' in A_list_things
4.3 实用列表函数
price=[1,2,3,4,5,6,7,8,9] #统计元素个数 len(price) #元素最大值 max(price) #元素最小值 min(price) #元素排序 sorted(price) #元素反向排序 sorted(price,reverse=True) scores=['A','B','C','D','E','F'] #使用join函数添加分隔 scores_1='\n'.join(score) scores_1='~~~~~~'.join(score) names=['Xukun Cai','Yifan Wu','Han Lu','Zitao Huang'] #使用append添加元素,每次只能添加一个元素 names.append('Yixing Zhang')
5 元组和元组解包(tuple)
tuple区别于list之处在于tuple不可变,用于关联性非常强的变量,比如经纬度。
#tuple元组使用()括号 place_1=(1,2) print('Longitude:',place_1[0]) #元组解包 dimensions=1,2,3 length,width,height=dimensions #会输出1 print(length) #format输出 print('The dimensions are '+str(length)+str(width)+str(height)) print('The dimensions are {} {} {}'.format(length,width,height))
6 集合
集合的特征是没有顺序,可以用于列表降重。
places=['BJ','SH','NJ','HZ','NJ','HZ'] #将place转换为set unique_places=set(places) #会输出['BJ','SH','NJ','HZ'] print(unique_places) #定义一个集合,使用{} numbers={1,2,3,4,5,6,7,8,9} #对应于列表的append,集合的添加元素使用add,移除使用pop #添加9在末尾 numbers.add(9) #移除,对列表这样的有顺序的会移除最后一个 numbers.pop() #输出改变的集合 print(numbers)
7 字典
#建立字典 names={'Xukun Cai':'Chicken you are too beautiful', 'Yifan Wu':'Bad girl~', 'Han Lu':'I am real man!', 'Zitao Huang':'I need a towel'} #使用get()函数,避免报错。使用之后找不到会返回None print(names.get('Xukun Cai')) #get函数自定义返回值 names.get('Meiqi Meng','Meiqi is not here.') #复合数据结构 names={'Xukun Cai':{'quote':'Chicken you are too beautiful','hobby':'sing,dance,rap,basketball'}, 'Yifan Wu':'Bad girl~', 'Han Lu':'I am real man!', 'Zitao Huang':'I need a towel'} kun=names['Xukun Cai'] kun_hobby=names['Xukun Cai']['hobby'] print(kun) print(kun_hobby)
8 条件语句(if)
client_balance=1000 bank_balance=50000 print('You have {} QB in your game and {} RMB in the bank.'.format(client_balance,bank_balance)) #Python里通过缩进确定流程,不要忘记: #简单的if条件语句 if client_balance<=2000: client_balance+=1500 bank_balance-=1500 print('You have {} QB in your game and {} RMB in the bank.'.format(client_balance,bank_balance)) #if,elif,else #Tips:善用and,or,not if client_balance<=2000: print('Pony Ma is waiting for you.') elif 2000<client_balance>2000<=50000: print('Pony Ma is happy.') else: print('Pony Ma loves you.')
9 循环语句(for 和 while)
9.1 for循环
names=['xukun cai','yifan wu','han lu','zitao huang'] #一般约定俗成的写法:for name in names for name in names: print(name.title()) #使用append函数将结果存储在新变量里 capitalized_names=[] for name in names: capitalized_names.append(name.title()) print(capitalized_names) #使用range函数重复操作,range(start,stop,step) for a in range(10): print('Bad girl~') #使用range函数生成列表 for a in list(range(10)): print('Skrrrrrrr') #在for循环中使用range函数,对索引进行循环 for index in range(len(names)): names[index]=names[index].title() print(names) #字典迭代(key,value) names={'Xukun Cai':{'quote':'Chicken you are too beautiful','hobby':'sing,dance,rap,basketball'}, 'Yifan Wu':'Bad girl~', 'Han Lu':'I am real man!', 'Zitao Huang':'I need a towel'} for key in names: print(key) #同时提取key和value for key,value in names.items(): print('Name:{} Info:{}'.format(key,value))
9.2 while循环
#while循环示例 deck=[1,2,3,4,5,6,7] equipped=[] while sum(equipped<=20): equipped.append(deck.pop()) print(equipped) #break终止 while True: word=input('Enter string to capitalize(type q to quit):') if word == 'q': break print(word.title()) print(word.capitalize()) #continue的用法 while True: value=input('Enter even number(type q to quit):') if value == 'q': break #注意转为int形式 value=int(value) #重新开始if条件语句 if value % 2 ==0: continue print('Wrong!')
10 Zip迭代器
zip和range一样用于生成list,range用于生成单属性的list,zip可以把不同属性打包进一个大的元素里。
#利用zip打包两个list的属性 names=['Xukun Cai','Yifan Wu','Han Lu','Zitao Huang'] heights=['183','187','178','183'] print(list(zip(names,heights))) #zip与for循环,同时打印出编号、姓名和身高 for i,name,height in zip(range(len(names)),names,heights): print(i+1,name,height) #zip与enumerate,生成序号代替range(len(names)) names_heights=list(zip(names,heights)) for i,name_height in enumerate(names_heights): print(i+1,name_height) #反向zip names_2,heights_2=zip(*names_heights) print('Names:{}\nheights:{}'.format(names_2,heights_2)) #zip打包成字典 names=['Xukun Cai','Yifan Wu','Han Lu','Zitao Huang'] quotes=['Chicken you are too beautiful','Bad girl~','I am real man!','I need a towel'] names_quotes=dict(zip(names,quotes)) print(names_quotes)
11 列表推导式
列表推导式可以大大减小代码量
#简单的代替for循环 numbers=[] for number in range(1,7): numbers.append(number) print(numbers ) numbers=[number for number in range(1,7)] print(numbers) #包括if条件语句的list comprehension numbers=[number**2 for number in range(1,7) if number % 2 == 0] print(numbers) #同时包括if和else的list comprehension numbers=[number**2 if number % 2 == 0 else number + 10 for number in range(1,7) ] print(numbers)
12 补充:实用函数split
#spilt()对空格,\n,\t可以直接分割 song='Chicken you are too beautiful' word=song.split() #split()里面可以添加分割记号 song='Chickenikunyouikunareikuntooikunbeautiful' word=song.split('ikun')
13 自定义函数
#简单的def函数 def add(num1,num2): result=num1+num2 return result #对输入设置默认值 def super_add(num1,num2,num3=100): result=num1+num2+num3 return(print(result))
15 高阶内置函数(lambda表达式,filter,map)
15.1 lambda表达式
lambda表达式可以用于仅定义少数几次的函数,方便快捷。
add=lambda num1,num2:num1+num2
15.2 filter函数
filter可以针对筛选条件筛选数据
#通过函数返回一个布尔型,filter调用该函数 names=['Xukun Cai','Yifan Wu','Han Lu','zitao huang'] def wrong_name(name): return name.islower() wrong_names=list(filter(wrong_name,names)) print(wrong_names)
15.3 map函数
map函数对列表进行批量操作,对列表内的数据依据某一函数批量变化。
square=lambda num:num**2 numbers=[1,2,3,4,5,6] a=list(map(square,numbers)) print(a)
16 迭代器与生成器
generator生成iterator,iterator生成list。list不是数据流,iterator是数据流。
为了减少计算机内存,不需要储存的前期数据需要用到迭代器和生成器。
16.1 迭代器enumerate()
#生成迭代序号,设置从1开始迭代 names=['Xukun Cai','Yifan Wu','Han Lu','Zitao Huang'] print(list(enumerate(names,1)))
16.2 生成器
#用生成器写出迭代器 def my_range(x): a=0 while a<x: #yield是区分生成器的标志 yield a a+=1 print(list(my_range(20))) #用生成器写出enumerate() def my_enumerate(iterable,start=0): count=start for element in iterable: yield count,element count+=1 names=['Xukun Cai','Yifan Wu','Han Lu','Zitao Huang'] print(list(my_enumerate(names))) #使用for循环输出 for i,name in my_enumerate(names,1): print('Code:{} {}'.format(i,name)) #利用生成器对大数据切片 def chunker(iterable,size,start=0): for i in range(start,len(iterable),size): yield iterable[i:i+size] for chunk in chunker(list(range(100)),20,0): print(chunk)