Python虽然结构简单,编程难度低,但是仍然还是比较麻烦,下面介绍12个编程小技巧。
掌握这些技巧后,一定能事倍功半,不,是事半功倍。
1,如何用input输入多个数据
#方法一
List=eval(input('输入若干个数字,以逗号分隔:'))#输入个数任意,都保存到List中,下同
#方法二
List = list(map(int, input('输入数字,以空格分隔').split()))
#int可以换为float等等,得到的数据也随之为相应类型。
解释:
1.map( )
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,
并把结果作为新的list返回。
2.split( )
拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
3.map(function,input(“以空格分开”).split())
由于input( )输出的是用空格分开的字符串,split( )会分割开各个值并放到列表中,
此时在列表中的值是字符串,如果要用于运算,那么必须在map( )中利用int( )或者float( )等处理,
再赋值。
2,同时获取索引和下标
List=[1,2,3,4,5,6]
for i,j in enumerate(List):#i为下标,j为相应数据
print("数据:",j,end=' ')
print("下标:",i)
结果:
数据: 1 下标: 0
数据: 2 下标: 1
数据: 3 下标: 2
数据: 4 下标: 3
数据: 5 下标: 4
数据: 6 下标: 5
3,内存地址查询
a=123
b='blue'
print(id(a))#不同电脑,值应该不同
print(id(b))
结果:
1942827915440
1942867659952
4,将两个列表转换为字典
a=['A','B','C','D','E']
b=[1,2,3,4,5]
#方法一
c1=dict(zip(a,b))
#方法二
c2={key:value for key,value in zip(a,b)}
#方法三
c3={}#初始化一个空字典
for k,v in zip(a,b):
if k not in c3.keys():#判断k是否在c3字典的键中
c3[k]=v
print(c1)
print(c2)
print(c3)
结果:
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
{'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
5,列表元素频率统计(利用字典)
a=[1,2,3,1,2,4,6,5,6,6,7,9,10,10]
b={}
for i in a:
if i not in b.keys():
b[i]=1
else:
b[i]=b[i]+1
print(b)
结果:
{1: 2, 2: 2, 3: 1, 4: 1, 6: 3, 5: 1, 7: 1, 9: 1, 10: 2}
6,交换两个变量的值
x,y=12,15
print(x,y)
x,y=y,x
print(x,y)
结果:
12 15
15 12
7,比较大小
x=3
print(1<x<6)
结果:
True
解释:
这在C语言中毫无疑问,一定是错的,然而,python是支持这种语法的,当然,用
且来判断也是可行的。
8,对象占用内存量查询
from sys import getsizeof
a=100
b='green'
print(getsizeof(a))
print(getsizeof(b))
结果:
28
54
9,检查是否有重复元素
List1=[1,2,3,4,56]
List2=[1,1,3,4,5,5]
print("有重复元素:",len(List1)!=len(set(List1)))
print("有重复元素:",len(List2)!=len(set(List2)))
结果:
有重复元素: False
有重复元素: True
解释:
set(x)函数可以用于集合生成,其中的参数可以为任意数据类型,返回结果是一个
无重复且排序任意的集合。也就是说,如果输入数据有重复,那么返回的结果也会
把重复的数据变得不再重复。
10,查找列表中出现次数最多的数
#方法一
List1=[1,2,3,4,56,11,2,3,4,5,6,7,1,2,3,1,1,1,19]
print(max(set(List1),key=List1.count))
#方法二
from collections import Counter #python内置库
ct=Counter(List1)
#输出频率最高的1个
print(ct.most_common(1))
结果:
1
[(1, 5)]#1出现5次
11,反转列表
list1=[1,2,5,4,7,6]
list2=list1[::-1]
print(list2)
结果:
[6, 7, 4, 5, 2, 1]
12,合并列表的两种方法
list1=[1,2,5,4,7,6]
list2=['A','B','C','D']
list3=list1+list2#直接加
list4=list1.extend(list2)#调用列表的extend方法
print(list3)
print(list4)
print(list1)
结果:
[1, 2, 5, 4, 7, 6, 'A', 'B', 'C', 'D']
None
[1, 2, 5, 4, 7, 6, 'A', 'B', 'C', 'D']
解释:
为什么list4为None?其实,这里非常重要,列表的append和extend方法都会
对原有列表进行修改,是不会返回一个新的列表的,返回值为None。
python虽然学起来简单,但是知识量也是挺大的,由于第三方库的丰富和一些特殊的技巧,也使得许多问题的解决变得非常简便。而这些技巧的掌握则需要平时的大量积累。