Python:将列表与列表列表相结合



首先,我给出了一个以年+月为字符串的列表:

li1 = ["2018-01-", "2018-02-", "2018-03-"]

其次,我有一个列表,每个月的天数:

li2 = [["1", "2", "3"],["1","2"],["5","9"]]

我想实现以下结果:

combined_list = ["2018-01-1", "2018-01-2", "2018-01-3", "2018-02-1", "2018-02-2", "2018-03-5", "2018-03-9"]

到目前为止我尝试了什么:

datum = []
count = -1
for y in l1:
for d in li2:
count += 1
name = y + d[count]
datum.append(name)

带有以下错误:;IndexError:列表索引超出范围;。问题:

  1. 有可能的方法来解决这个问题吗
  2. 如何在循环中重置计数器

使用具有列表理解的zip

例如:

li1 = ["2018-01-", "2018-02-", "2018-03-"]
li2 = [["1", "2", "3"],["1","2"],["5","9"]]
result = [f"{i}{k}" for i, j in zip(li1, li2) for k in j]
print(result)
# --> ['2018-01-1', '2018-01-2', '2018-01-3', '2018-02-1', '2018-02-2', '2018-03-5', '2018-03-9']

试试这个:

li1 = ["2018-01-", "2018-02-", "2018-03-"]
li2 = [["1", "2", "3"],["1","2"],["5","9"]]
new_lst = [f"{li1_e}{li2_e2}" for li1_e in li1 for li2_e in li2 for li2_e2 in li2_e]
print(new_lst)

输出:

['2018-01-1', '2018-01-2', '2018-01-3', '2018-01-1', '2018-01-2', '2018-01-5', '2018-01-9', '2018-02-1', '2018-02-2', '2018-02-3', '2018-02-1', '2018-02-2', '2018-02-5', '2018-02-9', '2018-03-1', '2018-03-2', '2018-03-3', '2018-03-1', '2018-03-2', '2018-03-5', '2018-03-9']

最新更新