将列表中的整数转换为字符串,然后将其转换为python 3.x中的日期

时间:2017-11-17 19:05:31

标签: python python-3.x ipython

我刚开始在大学学习python,我对这个练习有问题: 基本上我必须采取整数列表,例如[10,2,2013,11,2,2014,5,23,2015],将必要的元素转换为字符串形成日期,如['1022013' ,1122014,5232015]然后在字符串之间放一个/所以我有['10 / 2/2013','11 / 22/2014','2015年5月23日']。它需要是一个函数,并且列表的长度假定为3的倍数。我该怎么做呢? 我写这段代码开始:

def convert(lst):
     ...:     for element in lst:
     ...:      result = str(element)
     ...:      return result
     ...:

但是从列表[1,2,3]只返回'1'。

4 个答案:

答案 0 :(得分:1)

要将您的列表拆分为3个大小,请使用rangestep为3

for i in range(0, len(l), 3):
    print(l[i:i+3])

使用/加入片段就像

一样简单
'/'.join([str(x) for x in l[i:i+3]])

将它们拼凑成一个函数:

def make_times(l):
    results = []
    for i in range(0, len(l), 3):
        results.append('/'.join([str(x) for x in l[i:i+3]]))
    return results

答案 1 :(得分:1)

testList = [10,2,2013,11,2,2014,5,23,2015]

def convert(inputList):
    tempList = []
    for i in range (0, len(inputList), 3): #Repeats every 3 elements
        newDate = str(inputList[i])+"/"+str(inputList[i+1])+"/"+str(inputList[i+2]) #Joins everything together
        tempList.append(newDate)
    return tempList

print(convert(testList))

Saswata sux

答案 2 :(得分:0)

使用datetime提取日期,并使用strftime对其进行格式化:

from datetime import datetime

dates = [10,2,2013,11,2,2014,5,23,2015]
for i in range(0, len(dates), 3):
    d = datetime(dates[i+2], dates[i], dates[i+1])
    print(d.strftime("%m/%d/%y"))

<强>输出

10/02/13
11/02/14
05/23/15

答案 3 :(得分:0)

这样的事情会起作用:

def convert(lst):
    string = ''
    new_lst = []
    for x in lst:
        if len(str(x)) < 4:
            string += str(x)+'/'
        else:
            string += str(x)
            new_lst.append(string)
            string = ''
    return(new_lst)

lst = [10,2,2013,11,2,2014,5,23,2015]

lst = convert(lst)

print(lst)

#output
['10/2/2013', '11/2/2014', '5/23/2015']

因此,创建一个占位符字符串和一个新列表。然后循环遍历列表中的每个元素。如果元素不是一年,则将其添加到带有“/”的字符串中。如果是一年,请将字符串添加到新列表中并清除字符串。