<p>我假设您不允许在这里使用<code>join</code>。您必须首先处理空列表和单例的特殊情况,然后为最后一个添加具有另一个特殊处理的所有元素</p>
<p>下面是一个可能的Python代码:</p>
<pre><code>def commacode(lst):
# an empty list gives a blank string
if len(lst) == 0:
cr = ''
# a single element list returns its element
elif len(lst) == 1:
cr = lst[0]
# else all elements are joined with ' ,' except last with ', and'
else:
cr = lst[0]
# list has at least 2 elements so list[1:-1] is defined
# (it is at least empty for just 2 elements)
for elt in lst[1:-1]:
cr += ', ' + elt
# special processing for the last element
cr += ', and ' + lst[-1]
return cr
for lst in spam:
print(commacode(lst))
</code></pre>
<p>根据您的数据,它将按预期提供:</p>
<pre><code>dog, cat, bird, tiger, lion, and camel
elephant, and alligator
horse
>>>
</code></pre>
<p>(我添加了一个提示显示,使最后一个空行可见)</p>
<hr/>
<p>如果可以使用<code>join</code>,<code>else</code>部分可以是:</p>
<pre><code> else:
# list has at least 2 elements so list[1:-1] is defined
# (it is at least empty for just 2 elements)
cr = ', '.join(lst[:-1]
# special processing for the last element
cr += ', and ' + lst[-1]
</code></pre>