【发布时间】:2019-11-04 20:40:12
【问题描述】:
在我的代码中,用户输入了一个文本文件,该文件保存为变量“emplaced_animals_data”。此变量有四列(动物 ID、X 位置、Y 位置和 Z 位置),行数取决于上传的文本文件。然后我有另一个列表 (listed_animals),其中包含我们想要从 emplaced_animals_data 收集位置数据的动物。到目前为止,我已经为listed_animals 列表中的每个项目创建了一个新变量。我希望能够将这些新变量中的每一个与我的 emplaced_items_data Animal ID 列进行比较并存储它们的适当位置,而不必显式调用“Animal1、Animal2 等”。这是我目前拥有的代码以及正在输出的代码:
listed_animals = ['cat', 'dog', 'bear', 'camel', 'elephant']
Animal1_Xloc = []
Animal1_Yloc = []
Animal1_Zloc = []
for i, value in enumerate(listed_animals):
for j in range(0, len(emplaced_animals_data)):
exec ("Animal%s=value" % (i))
if Animal1 == emplaced_animals_data[j,0]: #don't want to explicitly have to call
Animal1_Xloc = np.append(Animal1_Xloc, emplaced_animals_data[j,1])
Animal1_Yloc = np.append(Animal1_Yloc, emplaced_animals_data[j,2])
Animal1_Zloc = np.append(Animal1_Zloc, emplaced_animals_data[j,3])
print(Animal1)
print('X locations:', Animal1_Xloc)
print('Y locations:', Animal1_Yloc)
print('Z locations:', Animal1_Zloc)
dog
X locations: ['1' '2' '3' '4' '1' '2' '3' '4' '1' '2' '3' '4' '1' '2' '3' '4' '1' '2'
'3' '4']
Y locations: ['3' '12' '10' '8' '3' '12' '10' '8' '3' '12' '10' '8' '3' '12' '10' '8'
'3' '12' '10' '8']
Z locations: ['9' '8' '1' '1' '9' '8' '1' '1' '9' '8' '1' '1' '9' '8' '1' '1' '9' '8'
'1' '1']
emplaced_animals_data 列表中使用的数据可以在这里找到: emplaced_animals_data visual
我的目标是用不同的符号绘制每只动物的位置,但是因为listed_animals 列表中可能并不总是有相同的动物或相同数量的动物,所以我不能明确地调用每只动物。那么关于如何进行迭代的任何想法?
【问题讨论】:
-
任何时候我听到有人问“我如何为每个...创建一个新变量”我想:那个人需要学习字典:docs.python.org/3/tutorial/datastructures.html#dictionaries
-
@jez 我知道...我发现字典非常混乱,我不确定它是否适用于我在这种情况下尝试做的事情。
-
@Sayse 也许吧?该页面上的大部分内容都指向使用字典,这是我真的不想做/不知道该怎么做...
-
或者,就@Sayse 而言,对于每个键(动物)都有一个值(位置坐标列表或元组 (x,y,z))
标签: python list loops data-manipulation generic-programming