![](/img/trans.png)
[英]convert string value to variable name | string value contain variable name
[英]Connect string value to a corresponding variable name
這個問題與我之前的帖子有某種關系。 參見此處,嵌套列表的重疊會創建不需要的間隙
我認為我已經找到了解決方案,但是我不知道如何實現它。
首先是相關代碼,因為我認為這樣解釋我的問題更容易。 我准備了一個小提琴來顯示代碼:
每次迭代都根據axis
填充ag
的嵌套列表。 下一次迭代應該填充ag
的下一個嵌套列表,但要取決於之前填充的列表的長度。
實現這一點的一般想法如下:
首先,我將頂部for循環中的每個嵌套列表分配給這樣的變量:
x = ag[0]
y = ag[1]
z = ag[2]
為了標識第一個列表,我需要像這樣訪問data_j
。 我認為訪問將以這種方式工作。
data_j[i-1]['axis']
data_j[i-1]['axis']
返回x
, y
或z
作為string
現在,我需要獲取列表的長度,該長度與data_j[i-1]['axis']
返回的軸相對應。
問題是如何連接data_j[i-1]['axis']
的“值”及其對應的x = ag[0]
, y = ag[1]
或z = ag[2]
由於eval()
和globals()
是不好的做法,因此我需要向正確的方向發展。 我找不到解決方案
編輯:我想我想出了一種方法。 我將嘗試使用父循環的迭代器i
(請參見小提琴),而不是使用實際的軸名稱,因為它會為data_j
每個元素增加,它會創建一個id,我認為我可以使用它創建一個id。將其用於嵌套索引以尋址正確列表的方法。
我設法使用迭代器i
解決了它。 請參閱原始文章中的小提琴,以了解我對以下代碼所做的工作:
if i < 0:
cond = 0
else:
cond = i
pred_axis = data_j[cond]['axis']
if pred_axis == 'x':
g = 0
elif pred_axis == 'y':
g = 1
elif pred_axis == 'z':
g = 2
calc_size = len(ag[g])
n_offset = calc_size+offset
我還沒有弄清楚為什么cond
必須是i
而不是i-1
但是它可以工作。 一旦弄清其背后的邏輯,我就會發布它。
編輯 :它不適用於i
它適用於i-1
。 我對相關列表的索引從1
開始。 ag[0]
保留用於常量,可以在需要時添加該常量以進行進一步的計算。 因此,由於相關索引從一開始就已經向上移動了1
的值,所以我不需要在每次運行中都減少迭代器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.