我有两个要结合的列表。我尝试使用zip()
但是header_list因为显而易见的原因而耗尽。
header_list = ['1 mo', '3 mo', '6 mo', '1 yr', '2 yr', '3 yr', '5 yr', '7
yr', '10 yr', '20 yr', '30 yr']
data_list = [1.29, 1.44, 1.61, 1.83, 1.92, 2.01, 2.25, 2.38, 2.46,
2.64, 2.81, 1.29, 1.41, 1.59, 1.81, 1.94, 2.02, 2.25, 2.37, 2.44, 2.62, 2.78, 1.28, 1.41, 1.6, 1.82, 1.96, 2.05, 2.27, 2.38, 2.46, 2.62, 2.79]
结果应该是以下格式的元组:
('1 mo', 1.29)
('3 mo', 1.44)
('6 mo', 1.61)
('1 yr', 1.83)
('2 yr', 1.92)
('3 yr', 2.01)
('5 yr', 2.25)
('7 yr', 2.38)
('10 yr', 2.46)
('20 yr', 2.64)
('30 yr', 2.81)
('1 mo', 1.29)
('3 mo', 1.41)
('6 mo', 1.59)
('1 yr', 1.81)
('2 yr', 1.94)
('3 yr', 2.02)
('5 yr', 2.25)
('7 yr', 2.37)
('10 yr', 2.44)
('20 yr', 2.62)
('30 yr', 2.78)
...
答案 0 :(得分:6)
如果您使用itertools,您可以使用cycle
重复较短的一个:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/usr/lib/python3/dist-packages/pip/commands/install.py", line 290, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/usr/lib/python3/dist-packages/pip/req.py", line 1266, in prepare_files
req_to_install.extras):
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2401, in requires
dm = self._dep_map
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2597, in _dep_map
self.__dep_map = self._compute_dependencies()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2621, in _compute_dependencies
parsed = next(parse_requirements(distvers))
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2721, in parse_requirements
"version spec")
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2697, in scan_list
raise ValueError(msg, line, "at", line[p:])
ValueError: ("Expected ',' or end-of-list in", 'pytest ==3.2.*', 'at', '*')
一旦较短的可迭代结束, from itertools import cycle
print(zip(cycle(header_list), data_list))
将停止。 zip
返回一个永不结束的迭代(不断重复cycle
),因此header_list
会更短(当data_list
结束时它将停止压缩)。
答案 1 :(得分:1)
假设您希望简短的列表简单换行,您可以遍历较长列表的索引并使用较短列表的长度来修改当前索引:
gomobile init
或者,更加Pythonic:
out = [(header_list[i%len(header_list)], data_list[i]) for i in range(len(data_list))]
答案 2 :(得分:0)
这样的事情怎么样?
counter = 0
new_list = []
for data in data_list:
new_list.append([header_list[counter%len(header_list)],data])
counter+=1