【问题标题】:How to concatenate date and time in a list?如何在列表中连接日期和时间?
【发布时间】:2021-02-23 09:27:57
【问题描述】:

我有一个如下所示的列表:

my_list = 
[['BCN', '01-01-2021', '08:30:30'],
 ['MCR', '01-01-2021', '12:48:12'],
 ['TNG', '01-01-2021', '10:01:02']]

对于my_list 中的每个列表,我正在尝试加入index[1] + index[2] 并将其写回到新列表中。

这是我的代码:

new_list = []
for row in my_list:
    ' '.join(row[1] + row[2])
    new_list.append(row)

print(new_list)

这是我的输出:

[['BCN', '01-01-2021', '08:30:30'],
 ['MCR', '01-01-2021', '12:48:12'], 
 ['TNG', '01-01-2021', '10:01:02']]

这是我的预期输出:

[['BCN', '01-01-2021 08:30:30'], 
 ['MCR', '01-01-2021 12:48:12'], 
 ['TNG', '01-01-2021 10:01:02']]

【问题讨论】:

    标签: python string list datetime join


    【解决方案1】:

    你没有改变行的值

    试试:

    for row in my_list:
        row = [row[0], ' '.join([row[1], row[2]])]
        new_list.append(row)
    

    【讨论】:

      【解决方案2】:

      这一行没有赋值,它没有做你所期望的,因为它首先附加字符串(+),然后在每个字符之间放置一个空格(连接):

          ' '.join(row[1] + row[2])
      

      这就是你想要做的事情:

      for row in my_list:
          new_list.append(row[0])
          new_list.append(row[1] + ' ' + row[2])
      

      【讨论】:

        【解决方案3】:

        您只是添加每行的最后两个元素,而不是在任何地方分配它。试试这个:

        new_list = []
        for row in my_list:
            new_list.append([row[0], ' '.join(row[1:])])
        
        print(new_list)
        # Output
        # [['BCN', '01-01-2021 08:30:30'], 
        #  ['MCR', '01-01-2021 12:48:12'], 
        #  ['TNG', '01-01-2021 10:01:02']]
        

        更短的版本是:

        >>> [[first, ' '.join(rest)] for first, *rest in my_list]
        
        [['BCN', '01-01-2021 08:30:30'],
         ['MCR', '01-01-2021 12:48:12'],
         ['TNG', '01-01-2021 10:01:02']]
        

        编辑:

        >>> my_list
        
        [['BCN', '01-01-2021', '08:30:30', 'other0'],
         ['MCR', '01-01-2021', '12:48:12', 'other1'],
         ['TNG', '01-01-2021', '10:01:02', 'other2']]
        
        >>> new_list = []
        >>> for row in my_list:
        ...     new_list.append([row[0], ' '.join(row[1:3]), row[-1]])
        
        >>> new_list
        [['BCN', '01-01-2021 08:30:30', 'other0'],
         ['MCR', '01-01-2021 12:48:12', 'other1'],
         ['TNG', '01-01-2021 10:01:02', 'other2']]
        

        或者,

        >>> [[first, ' '.join(rest), last] for first, *rest, last in my_list]
        
        [['BCN', '01-01-2021 08:30:30', 'other0'],
         ['MCR', '01-01-2021 12:48:12', 'other1'],
         ['TNG', '01-01-2021 10:01:02', 'other2']]
        

        更多项目:

        >>> new_list = []
        >>> for row in my_list:
        ...     new_list.append([row[0], ' '.join(row[1:3]), *row[3:]])
        

        【讨论】:

        • 谢谢。我喜欢 for 循环中的那个 :)
        • 如果列表中有另一个对象在时间后面呢?
        • 第一种方法,将row[1:]更改为row[1:3],第二种方法将first, *rest更改为first, *rest, other
        • 但我不希望最后一个对象与日期和时间相结合。
        • 它不会加入最后一个对象。
        【解决方案4】:

        有两件事你必须考虑修复

        1. 您没有将新的格式化值分配给任何 var
        2. + in ' '.join(row[1] + row[2]) 先追加再加入

        你可以解决第二个问题

        1. ' '.join([row[1], row[2]])
        2. ' '.join(row[1:])
        3. row[1] + " " + row[2]

        所以解决方案可以像 --

        # Your list
        my_list = [['BCN', '01-01-2021', '08:30:30'],
         ['MCR', '01-01-2021', '12:48:12'],
         ['TNG', '01-01-2021', '10:01:02']]
         
        # Newly formatted list
        new_list = []
        for row in my_list:
            # You have to change these two lines - assign new formatted value to a var and append that into your new_list
            changed = [row[0], row[1] + " " + row[2]]
            new_list.append(changed)
        
        print(new_list)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2013-07-17
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多