我得到了一个示例代码,它计算氢电子轨道的能量。除了 map(list,zip(*data)) 部分,我了解所有内容。有人可以列出另一种方法来执行相同的操作,以便我可以正确理解这部分在做什么吗?
代码如下:
def valid_l(l,n):
return l >= 0 and l < n
def valid_m(m,l):
return m >= -l and m <= l
Nmax = 20 # n1 < n2 < 20
for n2 in range(1,Nmax+1):
l21=[]
for l2 in range (n2):
for m2 in range(-l2,l2+1,1):
tuple=(l2,m2)
l21.append(tuple)
for n1 in range(1,n2):
l11=[]
for l1 in range(n1):
for m1 in range(-l1,l1+1,1):
tuple=(l1,m1)
l11.append(tuple)
dE=-(13.6)/n2**2+13.6/n1**2 #Change in energy
nm=1240/dE #Wavelength released
a,b = map(list,zip(*l21))
c,d = map(list,zip(*l11))
count = 0
for i in range(len(a)):
for j in range(len(c)):
if (b[i]-d[j]==1 or b[i]-d[j]==-1 or b[i]-d[j]==0) and (a[i]-c[j]==1 or a[i]-c[j]==-1):
count+=1
if 380 < nm < 750: # Visible spectrum
print("{}->{}v {} {:.3f} {:.3f}".format(n2,n1,count,dE,nm))
else:
print("{}->{} {} {:.3f} {:.3f}".format(n2,n1,count,dE,nm)) #Normal run
我一直在谷歌搜索功能,但不明白它们在这里是如何一起使用的。