Python3 - 从列表中打印一个字符串,在列表的最后一项之前用逗号分隔 'and'
Python3 - print a string from a list, seperated by commas with an 'and' before the last item in a list
我正在寻找一种更简单(不一定更像 pythonic 或更好)的方法来打印 Python3 中的项目列表,每个项目都用逗号分隔,除了最后一个项目使用 'and'.
到目前为止我有
items=['foo','bar','baz']
print(','.join(items[0:-1]),'and',items[-1])
但是,我想将它用作 12-13 岁学生资源的一部分,它并不是最易读的代码。
编辑:删除列表理解。
您可以使用format
方法:
print("{} and {}".format(",".join(items[:-1]), items[-1]))
第一个 {}
将填充除最后一个元素之外的所有元素的 join
,然后您只打印最后一个元素。
假设您的列表至少包含 2 个字符串:
print(','.join(items[:-1]) + ' and ' + items[-1])
我想这对那个年龄段的人来说已经足够清楚了
这可能更容易阅读:
items=['foo','bar','baz']
for i, item in enumerate(items):
if i == len(items) - 1:
print('and ' + item)
else:
print(item + ',',end=' ')
>>> foo, bar, and baz
已为 Python3 更新,我也想到了这个(非常相似):
items=['foo', 'tri', 'baz']
s = ''
for i, item in enumerate(items):
if i == len(items) - 1:
s += 'and {}'
else:
s += '{}, '
print(s.format(*items))
只需将其分解并对其进行评论 - 它可以作为一种练习,以更高级的方式进行,例如:
if not items:
print('')
elif len(items) == 1:
print(items[0])
elif len(items) == 2:
print(' and '.join(items)) # or to show `print` options
# print(*items, sep=' and ')
else:
words, last_word = items[:-1], items[-1]
print(', '.join(words), 'and', last_word)
利用Py3.x的扩展解包,可以使最后一个为:
else:
*words, last_word = items
print(', '.join(words), 'and', last_word)
或者,只需在批次上强制使用 ', '.join
,并在最后一个 ', '
上拆分,然后根据您是否有分隔符,适当打印。
words, sep, last = ', '.join(items).rpartition(', ')
if sep:
print(words, 'and', last)
else:
print(last)
我正在寻找一种更简单(不一定更像 pythonic 或更好)的方法来打印 Python3 中的项目列表,每个项目都用逗号分隔,除了最后一个项目使用 'and'.
到目前为止我有
items=['foo','bar','baz']
print(','.join(items[0:-1]),'and',items[-1])
但是,我想将它用作 12-13 岁学生资源的一部分,它并不是最易读的代码。
编辑:删除列表理解。
您可以使用format
方法:
print("{} and {}".format(",".join(items[:-1]), items[-1]))
第一个 {}
将填充除最后一个元素之外的所有元素的 join
,然后您只打印最后一个元素。
假设您的列表至少包含 2 个字符串:
print(','.join(items[:-1]) + ' and ' + items[-1])
我想这对那个年龄段的人来说已经足够清楚了
这可能更容易阅读:
items=['foo','bar','baz']
for i, item in enumerate(items):
if i == len(items) - 1:
print('and ' + item)
else:
print(item + ',',end=' ')
>>> foo, bar, and baz
已为 Python3 更新,我也想到了这个(非常相似):
items=['foo', 'tri', 'baz']
s = ''
for i, item in enumerate(items):
if i == len(items) - 1:
s += 'and {}'
else:
s += '{}, '
print(s.format(*items))
只需将其分解并对其进行评论 - 它可以作为一种练习,以更高级的方式进行,例如:
if not items:
print('')
elif len(items) == 1:
print(items[0])
elif len(items) == 2:
print(' and '.join(items)) # or to show `print` options
# print(*items, sep=' and ')
else:
words, last_word = items[:-1], items[-1]
print(', '.join(words), 'and', last_word)
利用Py3.x的扩展解包,可以使最后一个为:
else:
*words, last_word = items
print(', '.join(words), 'and', last_word)
或者,只需在批次上强制使用 ', '.join
,并在最后一个 ', '
上拆分,然后根据您是否有分隔符,适当打印。
words, sep, last = ', '.join(items).rpartition(', ')
if sep:
print(words, 'and', last)
else:
print(last)