ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

提升python编程的一些技巧总结(不间断更新)

2021-11-29 21:31:40  阅读:132  来源: 互联网

标签:python 编程 列表 item lst 不间断 print else data


文章目录

1. 列表、字典和集合推导式

  • 列表推导

后面接的if操作是可选项。

lst = [i * i for i in range(1,10) if i%2==0] #生成一个新列表
print(lst) # [4, 16, 36, 64]

同理字典推导式和集合推导式也可以if选项。

  • 字典推导
# 字典推导式1:
items = ["Fruits","Books","Othes"]
prices=[23,45,73,56,78]
dic = {item:price for item,price in zip(items,prices)} # {'Fruits': 23, 'Books': 45, 'Othes': 73}
print(dic)

# 字典推导式2:
testDict= {i: i *i for i in range(10)}
print(testDict) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
  • 集合推导
s= {i * i for i in range(1,10)}
print(s)

输出:

{64, 1, 4, 36, 9, 16, 49, 81, 25}

2. while…else和for…else

当while和for条件正常结束后,将会执行else操作,如果是使用break强制跳出,则不会执行else

  • 正常结束

while举例:

item = 0
while item < 3:
    item+=1
    print(item)
else:
    print("正常结束!")

for举例:

lst = [1,2,3]
for item in lst:
    print(item)
else:
    print("正常结束!")

以上两个都输出:

1
2
3
正常结束!
  • 非正常结束

while举例:

item = 0
while item < 3:
    item += 1
    print(item)
    if item == 2:
        break
else:
    print("正常结束!")

for举例:

lst = [1,2,3]
for item in lst:
    print(item)
    if item == 2:
        break
else:
    print("正常结束!")

以上两个都输出:

1
2

3. 原地交换多个数值

x,y,z= 10,20,30
print(x,y,z) # 10 20 30
x,y,z= y,z,x
print(x,y,z) # 20 30 10

4. 使用in操作简化if

if m in [1,3,5,7]:

等价于:

if m==1 or m==3 or m==5 or m==7:

5. 内置sort函数与序列的sort方法

  • list的内置排序sort:不改变地址,在原列表基础上排序
  • 函数sorted:会生成新的列表,原列表不变。
lst = [9,2,5,6,8]

# 内建函数方法:
print(sorted(lst)) # [2, 5, 6, 8, 9]
print(lst) # [9, 2, 5, 6, 8]

# 列表方法:
lst.sort()
print(lst) # [2, 5, 6, 8, 9]

6. 将列表存储至新变量中

这种方式,元素个数与列表长度应该严格相同,不然会报错

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

输出:

1 2 3

7. 三元运算符

ans = 3 if 1 > 2 else 4 #if语句为true输出自己,否则输出else
print(ans) # 4

8. 找到列表中数字最多的元素

test= [1,2,3,4,2,2,3,1,4,4,4,4]
print(max(set(test),key=test.count))

输出:

4

9. 比较连接

ans = 3
if 4 < ans >2:
    print(ans)
else:
    print("else")

输出:

else

10. 巧用zip命令

(1)遍历两个列表

lst_1 = ["11", "22"]
lst_2 = ["33", "44"]
for a, b in zip(lst_1, lst_2):
     print(a + " && " + b)

输出:

11 && 33
22 && 44

(2)使用zip对多个列表排序

names = ['John', 'Amy', 'Jack']
scores = [98, 100, 85]  # 分数和名字是一一对应的

#按照names排序
data = list(zip(names, scores))
data.sort()
print(data) # [('Amy', 100), ('Jack', 85), ('John', 98)] ,names和scores列表不会发生改变

#按照分数进行排序
data = list(zip(scores, names))
data.sort()
print(data) # [(85, 'Jack'), (98, 'John'), (100, 'Amy')],names和scores列表不会发生改变

(3)使用两个序列构建一个字典

t1= (1,2,3)
t2= (10,20,30)
dic = dict(zip(t1,t2))
print(dic)

输出:

{1: 10, 2: 20, 3: 30}

11. 带索引的遍历列表

teams = [1,2,3,4]
for index, team in enumerate(teams):
    print(index, team)

输出:

0 1
1 2
2 3
3 4

12. 初始化列表的多个值

lst = [1]*3
print(lst)

输出:

[1, 1, 1]

13. 快速翻转列表

lst = [1,2,3,4,5]

# 反转方式1:
lst = lst[::-1]
print(lst) # [5, 4, 3, 2, 1]

# 反转方式2:内置函数
lst.reverse()
print(lst) # [1, 2, 3, 4, 5]

# 反转方法3:列表方法
#reversed出来的结果是反向的迭代器
lst1 = reversed(lst)
print(type(lst1)) # <class 'list_reverseiterator'>
lst = list(lst1) #内置方法不会影响原始值,所以要进行赋值操作
print(lst) # [5, 4, 3, 2, 1]

14. 使用字典存储选择操作

my_dict = {
    'sum':lambda x,y:x+y,
    'subtract':lambda x,y:x-y
}

print(my_dict['sum'](9,3)) # 12
print(my_dict['subtract'](9,3)) # 6

15. 统计数据个数方法

(1)字典统计方法

data = [1,4,5,6,7,4,334,5,23,1,3,4,4]

# 列表中出现数字出现的次数
d = dict.fromkeys(data, 0) #构建字典,键为:data,值为0
print(d) # {1: 0, 4: 0, 5: 0, 6: 0, 7: 0, 334: 0, 23: 0, 3: 0}
for v in data:
    d[v] += 1
print(d) # {1: 2, 4: 4, 5: 2, 6: 1, 7: 1, 334: 1, 23: 1, 3: 1}

(2)使用collections中的Counter进行计数

from collections import Counter
c = Counter('hello world')
dic = dict(c)
print(c)
print(dic)

#统计出现频率最高的前n个数
print(c.most_common(2)) # [('l', 3), ('o', 2)]

输出:

Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
{'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
[('l', 3), ('o', 2)]

16. 访问字典的元素操作

data = {'user': 1, 'name': 'Max', 'three': 4}
# 字典可以通过[]进行赋新值,但是不能访问没有的键值对
data['admin'] = data.get('admin', 6) + 4
print(data['admin']) # 10

#不可以访问没有的元素
print(data['new']) #不可以, 报错!!!

标签:python,编程,列表,item,lst,不间断,print,else,data
来源: https://blog.csdn.net/QLeelq/article/details/121050952

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有