<p>此代码也可以工作。首先,垃圾邮件列表中有4个列表。所以你需要对它进行迭代。这就是最后两行所做的。每次将列表作为参数传递给<code>commacode</code>函数时。根据您的期望,确定列表的长度以检查长度是否为1。如果长度为1,则表示有一项。这样就打印出来了。如果长度为0,则不执行任何操作。如果长度不为零,则迭代列表中的<code>items</code>,并用逗号连接到字符串。检查每个项目是否为最后一个项目。如果它是最后一项,字符串也将包含和</p>
<pre><code>from varname import nameof
animalList1 = ['dog', 'cat', 'bird', 'tiger', 'lion', 'camel']
animalList2 = ['elephant', 'alligator']
animalList3 = ['horse']
animalList4 = []
spam = [animalList1, animalList2, animalList3, animalList4]
name_of_list = [nameof(animalList1), nameof(animalList2), nameof(animalList3), nameof(animalList4)]
string = ""
counter = 0
def commacode(list, list_name):
global string
length = len(list)
if length == 1:
string = list[0]
elif length != 0:
for item in list:
if list.index(item) == length-1:
string = string + "and " + str(item)
else:
string = string + str(item) + ", "
else:
string = "-"
print(f"{list_name}: {string}")
string = ""
for list in spam:
commacode(list, name_of_list[counter])
counter += 1
</code></pre>
<p>我得到的输出:</p>
<pre><code>animalList1: dog, cat, bird, tiger, lion, and camel
animalList2: elephant, and alligator
animalList3: horse
animalList4: -
</code></pre>