在网易云课堂上参与了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)