处理这个 map(list,zip(*data)) 函数的另一种方法是什么?

问题描述 投票:0回答:0

我得到了一个示例代码,它计算氢电子轨道的能量。除了 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

我一直在谷歌搜索功能,但不明白它们在这里是如何一起使用的。

python list tuples
© www.soinside.com 2019 - 2024. All rights reserved.