<p>首先,虽然您没有向我们展示周围的代码,但您可能过于依赖全局变量。与其尝试为每个族成员创建唯一命名的数组,不如执行以下操作:</p>
<h3>别这么做(我马上告诉你原因)</h3>
<pre><code>#houseArray[currentFam][1] is the number of members in the current house.
for currentFam in range(houseArray[currentFam][1]):
family_member_info = []
family_member_info[0] = genSex()
family_member_info[1] = genFirstName()
family_member_info[2] = genAge()
# Pretend 2 is where we are storing the family member information list
houseArray[currentFam][2].append(family_member_info)
</code></pre>
<h2>更好的方法</h2>
<p>不要使用数组来做这种事情-很难很快判断哪个索引中实际存储了什么。即使在您的示例中,您也必须注意到<code>houseArray[currentFam][1]</code>正在存储当前房屋中的成员数。</p>
<p>我会使用<a href="http://docs.python.org/tutorial/datastructures.html#dictionaries" rel="nofollow">dictionary</a>或<a href="http://docs.python.org/library/collections.html#collections.namedtuple" rel="nofollow">named tuple</a>并将您的信息存储在其中。你可以这样做:</p>
<pre><code>from collections import namedtuple
# Create a class called "household"
# with three fields, "owner", "size" and "members"
household = namedtuple("household", "owner size members")
househould_array = []
# Create some households and put them in the array
household_array.append(household("Family #1", 3, []))
household_array.append(household("Family #2", 1, []))
household_array.append(household("Family #3", 7, []))
# Loop over every household in the household_array
for family in household_array:
# Each `household` namedtulpe's values can be accessed by
# attribute as well as by index number
# family[1] == family.size == 3
# (for Family #1)
for member_number in range(family.size):
# family[2] == family.members == []
# (before we put anything in it)
family.members.append(generate_family_member())
</code></pre>