如何消除Python循环打印列表唯一值时末尾的逗号
解决Python打印唯一值列表时末尾出现逗号的问题
你的问题出在循环打印每个唯一值时,不管是不是最后一个元素都加了逗号,这里给你几个实用的解决办法:
方法一:用字符串拼接最简洁(推荐)
直接把唯一值列表用", ".join()方法拼接成一个完整的字符串,一次性打印,从根源上避免末尾逗号的问题。同时提取唯一值的逻辑也可以按需优化:
保持原列表顺序的版本
def unique(list1): unique_values = [] for u in list1: if u not in unique_values: unique_values.append(u) # 用", "连接所有元素,直接打印 print(", ".join(unique_values)) wells = ["U1", "U1", "U3", "U3", "U3", "U5", "U5", "U5", "U7", "U7", "U7", "U7", "U7", "U8", "U8"] print("The unique values from list are...:", end=" ") unique(wells)
简化提取唯一值的版本(Python3.7+保持顺序)
如果用Python3.7及以上版本,可以用dict.fromkeys()快速提取有序的唯一值,代码更简洁:
def unique(list1): # dict.fromkeys会自动去重且保留原列表顺序 unique_values = list(dict.fromkeys(list1)) print(", ".join(unique_values)) wells = ["U1", "U1", "U3", "U3", "U3", "U5", "U5", "U5", "U7", "U7", "U7", "U7", "U7", "U8", "U8"] print("The unique values from list are...:", end=" ") unique(wells)
方法二:循环时判断是否为最后一个元素
如果一定要保留循环打印的逻辑,可以通过索引判断当前元素是不是列表的最后一个,是的话就不加逗号:
def unique(list1): unique_values = [] for u in list1: if u not in unique_values: unique_values.append(u) # 用enumerate同时获取索引和元素 for idx, u in enumerate(unique_values): if idx != len(unique_values) - 1: print(u, end=", ") else: print(u) wells = ["U1", "U1", "U3", "U3", "U3", "U5", "U5", "U5", "U7", "U7", "U7", "U7", "U7", "U8", "U8"] print("The unique values from list are...:", end=" ") unique(wells)
方法三:拆分打印前n-1个元素和最后一个元素
先打印除最后一个外的所有元素(每个后面加逗号),再单独打印最后一个元素,也能避免末尾逗号:
def unique(list1): unique_values = [] for u in list1: if u not in unique_values: unique_values.append(u) if unique_values: # 先判断列表非空,防止索引越界 # 打印前n-1个元素 for u in unique_values[:-1]: print(u, end=", ") # 打印最后一个元素 print(unique_values[-1]) wells = ["U1", "U1", "U3", "U3", "U3", "U5", "U5", "U5", "U7", "U7", "U7", "U7", "U7", "U8", "U8"] print("The unique values from list are...:", end=" ") unique(wells)
内容的提问来源于stack exchange,提问作者crtnnn
相关产品推荐
相关产品推荐

