【问题标题】:Create new array variable inside loop in python3在python3的循环内创建新的数组变量
【发布时间】:2021-07-04 19:02:43
【问题描述】:
r = 6371e3 # metres
latBS = 41.178210
lonBS = -8.597820
φ1 = latBS * math.pi/180 # φ, λ in radians
l = 0


dist=[] 
RSRP=[]

paths = ["pathA", "pathB", "pathC", "pathD0", "pathD1", "pathD2", "pathD3", "pathE", "pathF", "pathG0", "pathG1", "pathG2","pathG3"]

for x in paths:
    logFile = pd.read_csv('export/4G_{}.FMT'.format(x), sep='\t')
    logClean = logFile.dropna(subset=['All-Latitude', 'All-Longitude'])
 
    dist.clear()
    RSRP.clear()

    for index, row in logClean.iterrows():
    
        latMS=row['All-Latitude']
        lonMS=row['All-Longitude']

        φ2 = latMS * math.pi/180
        Δφ = (latMS-latBS) * math.pi/180
        Δλ = (lonMS-lonBS) * math.pi/180
        a = math.sin(Δφ/2) * math.sin(Δφ/2) + math.cos(φ1) * math.cos(φ2) * math.sin(Δλ/2) * math.sin(Δλ/2)
        c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
        d = r * c
        dist.append(d) # in metres
        RSRP.append(row['All-Serving Cell RSRP (dBm)[1]'])

使用当前代码,读取 4G_pathA.FMT 文件,然后在循环中处理一对地理坐标之间的距离。然后将这些值存储在数组 dist() 中。 但是,我想将这些值存储在 13 个不同的数组中,每个数组对应于 paths[] 数组中的每个路径,以便 dist_pathA、dist_pathB 等和 RSRP_pathA、RSRP_pathB 等 如何使用 for 循环中的 x 值作为名称在循环内创建一个新数组?我试过了

dist_{}.format(x)=[]

但无济于事。

干杯

【问题讨论】:

  • 不要那样做。相反,创建一个字典,其中path 是键,数组是值。这更容易使用。
  • 您正在尝试将字符串处理函数应用于标识符名称。一些语言(Tcl,臭名昭著)经常练习间接变量命名,但在 Python 中不推荐这种模式,也不像你写的那么简单。正如 Tim Roberts 所建议的,您真正想要的是字典或列表列表。

标签: python arrays python-3.x


【解决方案1】:

在循环内创建/填充的数组中存储数据的示例:

from collections import defaultdict

arrays_dict = defaultdict(list)
for i in range(10):
  arrays_dict[i].append(<something>)

然后循环结束后,每个键代表数组名称,值代表数组内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 2021-11-11
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多