RQL's Blog 菜鸟成长记

python的主要结构

2022-03-12
renql

python数据结构

Python有五个标准的数据类型:Numbers(数字),String(字符串),List(列表),Tuple(元组),Dictionary(字典)

# 列表是写在方括号 [] 之间、用逗号分隔开的元素列表
list = [ 'abcd', 786 , 2.23, [1,2,3]]
tinylist = [123, 'runoob']
list2 = [i for i in range(30) if i % 3 == 0]
# 得到列表 [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper()for name in names if len(name)>3]
# 得到列表 ['ALICE', 'JERRY', 'WENDY', 'SMITH']

print (len(list))       # 列表元素个数
print (list[3][0])      # 嵌套列表索引
print (list[1:3])       # 从第二个开始输出到第三个元素
print (list[2:])        # 输出从第三个元素开始的所有元素
print (list[-1::-1])    # 翻转列表
print (tinylist * 2)    # 输出两次列表
print (list + tinylist) # 连接列表

元组与列表类似,但元组的元素不能修改。
元组写在小括号 () 里,元素之间用逗号隔开
元组的索引及切片方式同list

# 字典用 {} 标识,它是一个无序的 键(key) : 值(value) 的集合
# 同一个字典中,键(key)必须是唯一且不可变的,因此数字,字符串或元组都可作为键,但列表不行。
dict1 = {}
dict1['one'] = "1 - 菜鸟教程"
dict1[2]     = "2 - 菜鸟工具"

tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}

dict2 = {x: x**2 for x in (2, 4, 6)} 
# 得到的字典为{2: 4, 4: 16, 6: 36}

print (len(dict2))        # 计算字典元素个数,即键的总数。
print (dict['one'])       # 输出键为 'one' 的值
print (tinydict.keys())   # 输出所有键
print (tinydict.values()) # 输出所有值
del tinydict['Name'] # 删除键 'Name'
tinydict.clear()     # 清空字典

python输入输出

python列表和元组顺序也是从0开始的

a=input("please input password")
print("password you input is ",password)
print(type(a)) # input variable is usually str

b=int(a)
print(type(b))  

a=2
b='casename'
print('%s month is %03d'%(b,a))
# 格式化输出结果:casename month is 002

python运算

python中除号用/表示,但是和C语言不同的是/得到的值总是浮点数,例如:5 / 5结果是1.0。 python中整除用//表示是,//表示两数相除,向下取整,例如8 // 5 结果是1,,至于数据类型是整数还是浮点数则取决于用到的数据类型。

python的条件判断语句

不管是条件语句还是循环,命令最后都有冒号。

if a == 0 and b != 14:
	b = b+a
elif not a <= -1:
	b = b-a
else:
	b = b*a
	
list1 = ['a','b','coin']
if 'a' in list1:
	print('you are right')
	

几种python的循环语句

for i in range(-1,-10,-4):  
	print("Number of cycles: %d"%i)  
# 输出结果:
# Number of cycles: -1
# Number of cycles: -5
# Number of cycles: -9

name = 'chengdu'  
for i in name:
	print(i,end='\t') 
# '\t'是转义字符,表示水平制表符,即 Tab 键,一般相当于四个空格
# 输出结果:c	h	 e	n	 g	d	 u

b = [np.arange(d-lagh,d+lagh+1) for d in range(2,10,3)]
# 列表生成式

coins = ["Bitcoin", "Ethereum", "Cardano"]
prices = [48000,2585,2]
for coin, price in zip(coins, prices):
    print(f"${price} for 1 {coin}")

for i, coin in enumerate(coins):
    price = prices[i]
    print(f"${price} for 1 {coin}")

i = 0
while i < 5 :
	print('cycle time now : %d, i = %d'%(i+1,i))
	i += 1
else : 
	print('cycle end, now i = %d'%i)

break语句跳出 for 和 while 的循环体
continue 跳过当前循环,直接进行下一轮循环
pass 是空语句,一般用作占位语句,不做任何事情

python 自定义函数

除了正常定义的位置参数(也就是必选参数)外,还可以使用默认参数可变参数(传入的参数个数可变)和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888

python读取nc文件

import netCDF4 as nc   
f=nc.Dataset("/home/users/qd201969/ERA5-1HR/stat_apr-sep1979-2019.nc") # best to use absolute path  
f.variables.keys() # get the list of the variables   

a=f.variables['mstr'] # get the data and vari info  
a=f.variables['mstr'][:] # only get the data  
lat=f.variables['latitude'][:]  
lon=f.variables['longitude'][:]

indx=np.argwhere((lon<100) & (lon>10))
indy=np.argwhere((lat<50) & (lat>10))   

从xarray走向netCDF处理: https://www.jianshu.com/p/86f02bc58265

import xarray as xr
f = xr.open_dataset('EC-Interim_monthly_2018.nc') 

a=f['mstr'] # get the data and vari info
a=f.mstr    # two method to read the variable

b=a.loc[84.86:90,352.5:360] # use lat and lon read data
c=b.mean(dim=['lon','lat'])  

支持 支付宝鼓励 鸡腿鸡腿

喜欢此文!

上一篇 cdo常用命令

Content