Python基本语法

喜欢而已 提交于 2019-12-01 04:36:36

在网易云课堂上参与了Python学习的课,竟然有1000+个视频。花了几天时间,已经看完了前100个Python基本语法入门的视频。
整理一下目前学到的知识。

1 学习环境

  1. Python
  2. Pycharm
  3. Anaconda
    学习这部分基本语法都是使用Python自带的IDLE。

2 变量,算术运算符,赋值运算符,布尔型运算符,比较运算符(and,or,not)

Tips:
赋值运算时:

  1. x,y,z=1,2,3可以快速赋值。
  2. price+=2price-=2price=price+2意义相同。

3 整数,浮点数,字符串,类型转换,字符串方法

Tips:

  1. type()查看数据类型
  2. 'I\'m learning Python!'其中的斜杠可以将’抵消。
  3. 字符串支持乘法和加法,不支持除法和减法。
First_word='Hello'
Second_word='World'
print(First_word+' '+Second_word)
  1. 常用函数len()
  2. int(True)返回值是1,false是0
  3. 字符串方法:
  • 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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!