首先,我给出了一个以年+月为字符串的列表:
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:列表索引超出范围;。问题:
- 有可能的方法来解决这个问题吗
- 如何在循环中重置计数器
使用具有列表理解的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']