python swapping 、string、Yield、list 、Enumerate、looping BW (sorted)、Dictionary、Ternary、sequence、with

在windows进入命令行或者linux进入终端,敲击进入相应的编译环境的时候,输入 

import this 

就会出来python的语法要求。

 

1)变量的交换  (swapping variables)
 

a=1
b=2

tmp=a
a=b
b=tmp

可以换成

a,b=b,a

2)字符串格式化  (string formatting)

name="Ross"
print("Hi,I'm "+name)

如果字符串过多的话,这样写就会很麻烦

我们可以把程序写成如下:
name="Rose"
country="China"
age=28
print("Hi,I'm %s.I'm from %s. And I'm %d" % (name,country,age))

还可以做的更好:
print("Hi,I'm {}. I'm from {}.And I'm {}.".format(name,country,age))
#format 是字符串对象的一个方法,调用它会返回被格式化过后的新字符串,而花括号中的内容会被最终替换成#format()函数中传入的各个参数

使用这个函数的另一个好处:
如果你有重复的需要被替换的内容:
print("Hi, I'm{0}.Yes,I'm {0}".format(name))
#你可以在花括号中写入被替代参数的索引

如果你使用的是python3.6以上的版本:
print(f"Hi,I'm{name}.I'm from {country}. And I'm {age}.")
#只需要在括号开头写一个f,花括号中的内容就会被自动的替换成指定表达式的值
#注意是表达式  比如{age+1},python将会把表达式运行的结果也就是29替换在字符串中。
#由于这里是任意的表达式,你甚至可以调用一个函数返回一个数值,并替换在字符串中也是没问题的

3)Yield语法  (Yield Statement)

def Fibonacci(n):
    a=0
    b=1
    nums=[]
    for _ in range(n):
        nums.append(a)
        a,b=b,a+b
    return nums


可以替换为:
def Fibonacci(n):
    a=0
    b=1
    for _ in range(n):
        yield a   #使用yield,不需要等待整个列表都生成完毕,而是立即将a送出 ,函数不会马上返回,
                  # 会继续的执行下去
        a,b=b,a+b
    return nums

for I in Fibonacci(10):  #此处直接接受a的每一次输出  yield 产出
    print(i)


#yield的例子:比如从网上下载一些文件,不需要等待文件全部下载完毕,每下载成功一个,就可以接收一个

4)列表解析式(list comprehension)

fruit=["apple","pear","pineapple","orange","banana"]

如果想把水果名字都改成大写:
可以
for i in range(len(fruit)):
    fruit[i]=fruit[i].upper()

or

fruit=[x.upper() for x in fruit]
#后面这个方括号实际上实在构建一个新的列表

#列表解析式还有另外一个应用--筛选或者过滤列表中的元素

比如我们希望挑选出列表中以a开头的水果

for f in fruit:
    if f.startswith("a"):
        filtered_fruit.append(f)

如果此处用列表解析式可以:
filtered_fruit=[x for x in fruit if x.startswitch("a")]

5) Enumerate 函数  (Enumerate Function)

如果我们想得到每个水果在列表中的索引值:

for i,x in enumerate(fruit):
    print(i,x)

#这里的enumerate() 函数会在每一次循环的过程中提供两个参数

# 第一个参数i代表索引值,第二个x代表列表中元素的内容

6)反向遍历(looping Backwards)

如果我们希望将fruit中的元素后往前依次输出:

for i,x in enumerate(reversed(fruit))  #enumerate 英 /ɪˈnjuːməreɪt/  美 /ɪˈnuːməreɪt/vt. 列#举;枚举;计算
    print(i,x)

7) 按顺序遍历 (Looping in sorted order)

#我们希望输出的元素是按照水果名字的字典顺序

#也就是让以a开头的排在最前面 ,以 z开头的排在最后面


# 使用python中的内建函数sorted()

for i,x in enumerate(sorted(fruit)):
     print(i,x)

8)字典合并操作 (Dictionary Merging)

a={"ross":"123456","xiaoming":"abc123"}
b={"Lilei":"111111","zhangsan":"123456"}   
  #字典的讲解       https://blog.csdn.net/nyist_yangguang/article/details/106413408                   


c={}
for k in a:
    c[k]=a[k]
for k in b:
    c[k]=b[k]

可以改成:

c={**a,**b}  #**在python中叫做解包unpacking unpacking

#英 /'ʌn'pækiŋ/  美 /ʌn'pækɪŋ/ n. 开包;取出货物

#这里的**a 和 **b 相当于将字典a和b中的内容直接填写到了这里

8)三元运算符  (Ternary Operator)

if score>60:
   s="pass"
else:
   s="fail"

可以被改成:

s="pass" if score>60 else "fail"   #等价于  ? :

9) 序列的解包 (Sequence Unpacking)

name="San Zhang"

str_list=name.split()
first_name=str_list[0]
last_name=str_list[1]

可以改成:

first_name,last_name=name.split()

#此处的序列不一定是列表(list),可以是元组(tuple),range。。。

10) With语句  (with statement)

f=open("somefile.txt","r")
s=f.read()
#不关闭的话,此文件一直占用系统资源,直到程序完全退出为止
f.close()


可以写成:

with open("somefile.txt","r")as f:
    s=f.read()

#这样写,就不需要手动调用close(),当with语句执行完毕之后,这个文件就会自动被python关闭

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的探索之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值