首页 > 解决方案 > 将列表中的所有元组组合成一个字符串

问题描述

我想将列表中的所有元组组合成一个字符串。我还需要在数字之间包含冒号,在数字和子午线之间包含空格。我的功能:

def create_time_list(filename):
    f = open(filename,"r")

    f.seek(0)
    fchar = f.read(1)
    if not fchar:
        raise Exception("EmptyFileError")

    f.seek(0)

    list = []

    for line in f:
        subtuple = tuple(line.split())
        for i in subtuple:
            if len(i) > 2 or len(i) < 1 :
                raise Exception("ImproperTimeError")
        if not subtuple[0].isdigit() or not subtuple[1].isdigit() or (int(subtuple[0]) > 12) or (int(subtuple[1]) > 59):
            raise Exception("ImproperTimeError")
        list.append(subtuple)
    return list

我的列表 :

[('4', '12', 'PM'), ('8', '23', 'PM'), ('4', '03', 'AM'), ('1', '34', 'AM'), ('12', '48', 'PM'), ('4', '13', 'AM'), ('11', '09', 'AM'), ('3', '12', 'PM'), ('4', '10', 'PM')]

输入 :

    4 12 PM
    8 23 PM
    4 03 AM
    1 34 AM
    12 48 PM
    4 13 AM
    11 09 AM
    3 12 PM
    4 10 PM

我想如何输出:

['4:12 PM' , '8:23 PM' , '4:03 AM', '1:34 AM' , '12:48 PM' , '4:13 AM' , '11:09 AM' , '3:12 PM' , '4:10 PM']

标签: pythonpython-3.x

解决方案


还有一种方式:

lst = [('4', '12', 'PM'), ('8', '23', 'PM'), ('4', '03', 'AM'), ('1', '34', 'AM'), ('12', '48', 'PM'), ('4', '13', 'AM'), ('11', '09', 'AM'), ('3', '12', 'PM'), ('4', '10', 'PM')]

list_out = [f"{h}:{m} {abr}" for (h, m, abr) in lst]

print(list_out)

结果:

['4:12 PM', '8:23 PM', '4:03 AM', '1:34 AM', '12:48 PM', '4:13 AM', '11:09 AM', '3:12 PM', '4:10 PM']

推荐阅读