Python:将列表与列表的列表组合
Python: Combining a list with a list of lists
首先我给出了一个以年+月为字符串的列表:
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:列表索引超出范围”。
问题:
- 有没有办法解决这个问题?
- 如何在循环中重置计数器?
试试这个:
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']
使用 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"]]
我想实现以下结果:
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:列表索引超出范围”。 问题:
- 有没有办法解决这个问题?
- 如何在循环中重置计数器?
试试这个:
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']
使用 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']