必须知道的 Python 专属骚技巧 25 例

碎碎练

skill25eg.py,后续继续将代码调出来检查"  TypeError: 'list' object is not callable "

map, reduce 这类还是需要多看多练

弄懂推导中的语法及熟练教材中的用法、函数、参数

 

 

print('-'*10,'必须知道的 Python 专属骚技巧 25 例','-'*10)
#eg1    原地交换
x,y = 10, 20
print(x,y)

x,y = y, x
print('交换值后 x,y = y, x ===>>>',x,y)


#eg2 链状比较操作符
n = 10
result = 1 < n < 20
print('result = 1 < n < 20 ===>>>', result)

result = 1 > n <= 9
print('result = 1 > n <= 9 ===>>>', result)

#eg3 三元操作符进行条件赋值
#x=10 if (y == 9) else 20
#print([x=10 if (y == 9) else 20])
print('在列表推导中 = ', [m**2 if m>10 else m**4 for m in range(50)])

#判断最小值
def small(a,b,c):
    return a if a<=b and a<=c else (b if b<=a and b<=c else c)
print('3,4,5中判断最小值  ===>>>', small(3,4,5))

#在类中# x=(classA if y==1 else classB(param1, param2)

#eg4 多行字符串
a = '''dvfssd
fsdfdsfsd
dsdsfbfdfasf
afasfaf'''
print('多行字符串 ===>>>', a)


#eg5 in判断
m = 3
if m in [1,3,5,7]:
    print('True') 
else:
    print('False')


#eg6 四种翻转字符串/列表的方式

## 翻转列表本身
testlistA = [1,3,5]
testlistA.reverse()
print('翻转字符串 ===>>>', testlistA)

# 在一个循环中翻转并迭代输出
for element in reversed([1,3,5]):
    print(element)

# 一行代码翻转字符串
'Test Python'[::-1]
print('Test Python'[::-1])

# 使用切片翻转列表
[1,3,5][::-1]
print([1,3,5][::-1])


#eg7 一次性初始化多个变量
#可以直接赋值:
# a,b,c,d = 1,2,3,4

list = [1,2,3]
x,y,z = list
print(x,y,z)

# 8、打印模块路径
import socket
print('模块路径 ===>>>', socket)


# 9、字典推导
# 列表推导           [expression for item in iterable]
lsta = [[0 for i in range(4)] for i in range(4)]
print(lsta)

testDict = {i:i*i for i in range(10)}
print('输出字典 i:i*i ===>>>', testDict)

testSet = {i*2 for i in range(10)}       ###Sublime text编辑,此处为什么for上定位高亮      
testSeta = set([i*2 for i in range(10)])
testSetb =set(i*2 for i in range(10))

print('输出集合1 i*i ===>>>', testSet)
print('输出集合2 i*i ===>>>', testSeta)
print('输出集合3 i*i ===>>>', testSetb)

# 10、拼接字符串
a = 'I '
b = 'love '
c = 'you '
print(a+b+c)

I = ['a','b','c']
print(''.join(I))

# 11、循环枚举索引
lsta = [10,20,30]
for i,value in enumerate(lsta):
    print(i,':',value)


# 12、返回多个值
def a():
    return 1,2,3,4,5
print(a())


# 十三、开启文件分享
# python3 -m http.server



# 十四、调试脚本
#import pdb
#pdb.set_trace()


# 十五直接迭代序列元素
I = [0,1,2,3,4,5]
for i in I:
    print('直接迭代序列元素 =', I)  
for i in range(len(I)):
    print('迭代元素的索引 =',I[i])


# 16、巧用else语句(重要)
l1 = [1,2,3,4,5]
for i in l1:
    if i == '6':
        print(666)
        break
else:
    print(999)

l2 = [1,2,3,4,5]
a = 1
for i in l2:
    print(666)
    a = 0
    break
if a:
    print(999)


# 十七、except的用法和作用
    '''
    try/except: 捕捉由PYTHON自身或写程序过程中引发的异常并恢复
    except: 捕捉所有其他异常
    except name: 只捕捉特定的异常
    except name, value: 捕捉异常及格外的数据(实例)
    except (name1,name2) 捕捉列出来的异常
    except (name1,name2),value: 捕捉任何列出的异常,并取得额外数据
    else: 如果没有引发异常就运行
    finally: 总是会运行此处代码
    '''

# 十八、Python自省
    '''
    type()
    dir()
    getattr()
    hasattr()
    isinstance()
    '''

# 十九、python容器



# 二十、map()
'''
def f1(a1):
    return a1*a1
r1 = list(map(f1,[1,2,3,4,5,6,7,8,9]))
r2 = list(map(f1,[1,2,3]))
print(r1)
print(r2)
'''

'''   ### 运行上面的结果为什么会出现下面提示,单独将此部分另外做一个单独的文件可正常运行,并将函数作用于列表中的元素并返回值,继续保留试验几种原因
  File "D:\Py_eg\IntroducingPython\skill25eg.py", line 181, in <module>
    r1 = list(map(f1,[1,2,3,4,5,6,7,8,9]))
TypeError: 'list' object is not callable
'''
#list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
# del list      ### 试着这样做看看效果,不记得在这行之前是否有用过将list当做变量名
# print(list(range(1,6)))


# 二十一、reduce
'''
        reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,
        这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
'''
from functools import reduce
def fn(x,y):
    return x*10+y
print(reduce(fn,[1,3,5,7,9]))


from functools import reduce
a = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def charnum(s):
    return a[s]
def strint(s):
    return reduce(lambda x,y:x*10+7,map(charnums))



# 二十二、split

str = '123456'
str_1 = str.split('/')
print(str_1)


# 二十三、理论结合实际
# 1) 下面这个在IDLE shell中执行,可将输入的一行英文按照单词 反转
print(" ".join(input().split(" ")[::-1]))


#  3)我们把最近的知识结合起来做一道题:
result = ""
for i in input()[::-1]:
    if i not in result:
        result +=i
print(result)

 

 

 

 

 

posted @ 2022-06-02 07:34  CDPJ  阅读(30)  评论(0编辑  收藏  举报