Python 将列表中的所有元组合并为字符串

Python 将列表中的所有元组合并为字符串,python,python-3.x,Python,Python 3.x,我想把列表中的所有元组组合成一个字符串。我还需要包括数字之间的冒号和数字与子午线之间的空格。我的职能: 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) li

我想把列表中的所有元组组合成一个字符串。我还需要包括数字之间的冒号和数字与子午线之间的空格。我的职能:

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']

最好的方法之一是使用
映射方法

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')]

print(list(map(lambda i: i[0]+':'+i[1]+' '+i[-1], list_)))
方法2 作者[@schwobasegl][1] 在这种情况下,逻辑就像列表上的
迭代器一样,使用
字符串格式
将这个字符串添加到新创建的列表中,我们的结果就是
{}:{}{}

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')]

lst = []
for i in list_:
    lst.append("{}:{} {}".format(*i))

# for one line list creation we can use list-comp by [@Andres Silva][1]
lst = ["{}:{} {}".format(*subtuple) for subtuple in list_]

print(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']
试试看, x是你的名单

y = []
for timesTup in x:
    z = ':'.join((timesTup[0],timesTup[1]))
    y.append(z+' '+timesTup[-1])
试试这个

l=[
('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'))
]
结果=[f“{hh}:{mm}{xm}”表示l中的hh,mm,xm]
打印(结果)
#['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']
众所周知,在python中,列表理解几乎总是更快。将变量从元组解压到相应的变量
hh
mm
xm
,然后使用这些变量使用f-strings创建字符串。

另一种方法:

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']

Try:
lst.append(“{}:{}{}”.format(*subtuple))
。请注意重命名的变量,因为您不应该使用名称
list
。告诉我list是不可调用的,老实说,pythonmethod3:使用list comprehension的第二周,我可能做了一些错误
lst=[“{}:{}{}”。列表中的子元组的格式(*子元组)
@DenisGojinetchi
列表
是用于
顶级函数列表
列表函数
返回列表的保留关键字object@denis,请注意,不应将
list
用作变量,因为该名称是保留的。尝试更改变量
list
,以获得一些变化(例如上述解决方案中的
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']