将两个列表的项目合并到也包含索引的元组列表中
Merge items of two lists into list of tuples that also contains index
实现以下目标的最 pythonic 方法是什么:
list_a = ["A", "B", "C"]
list_b = ["X", "Y", "Z"]
idx_start = 100
result = [ (100, "A", "X"), (101, "B", "Y"), (102, "C", "Z") ]
保证列表的大小相同。
你可以试试列表比较
>>> list_a = ["A", "B", "C"]
>>> list_b = ["X", "Y", "Z"]
>>> idx_start = 100
>>> [(idx_start+i,list_a[i],list_b[i]) for i in range(len(list_a))]
[(100, 'A', 'X'), (101, 'B', 'Y'), (102, 'C', 'Z')]
其他方式包括
[(idx_start+i,list_a[i],list_b[i]) for i,v in enumerate(list_a)]
Zip 也是一个选项
zip(range(idx_start,idx_start+len(list_a)), list_a, list_b)
使用列表理解:
[(i + start, a, b) for i, (a, b) in enumerate(zip(list_a, list_b))]
from itertools import count
zip(count(idx_start), list_a, list_b)
我在使用 HashSet 时遇到了同样的问题。
我所做的是在 for 循环中实例化一个 var,在 HashSet 中添加索引和两个值。
像这样的逻辑:
for (int i=0; i<a.length(); i++) {
result.add(i,list_a[i],list_b[i]);
}
既然您接受了您的结果可以是包含值元组的字典(或列表),请试试这个:
>>> list_a = ['A', 'B', 'C']
>>> list_b = ['X', 'Y', 'Z']
>>> idx_start = 100
>>>
>>> result_list = list(enumerate(zip(list_a, list_b), start=idx_start))
>>> result_dict = dict(enumerate(zip(list_a, list_b), start=idx_start))
>>>
>>> print (result_list)
[(100, ('A', 'X')), (101, ('B', 'Y')), (102, ('C', 'Z'))]
>>> print (result_dict)
{100: ('A', 'X'), 101: ('B', 'Y'), 102: ('C', 'Z')}
实现以下目标的最 pythonic 方法是什么:
list_a = ["A", "B", "C"]
list_b = ["X", "Y", "Z"]
idx_start = 100
result = [ (100, "A", "X"), (101, "B", "Y"), (102, "C", "Z") ]
保证列表的大小相同。
你可以试试列表比较
>>> list_a = ["A", "B", "C"]
>>> list_b = ["X", "Y", "Z"]
>>> idx_start = 100
>>> [(idx_start+i,list_a[i],list_b[i]) for i in range(len(list_a))]
[(100, 'A', 'X'), (101, 'B', 'Y'), (102, 'C', 'Z')]
其他方式包括
[(idx_start+i,list_a[i],list_b[i]) for i,v in enumerate(list_a)]
Zip 也是一个选项
zip(range(idx_start,idx_start+len(list_a)), list_a, list_b)
使用列表理解:
[(i + start, a, b) for i, (a, b) in enumerate(zip(list_a, list_b))]
from itertools import count
zip(count(idx_start), list_a, list_b)
我在使用 HashSet 时遇到了同样的问题。 我所做的是在 for 循环中实例化一个 var,在 HashSet 中添加索引和两个值。 像这样的逻辑:
for (int i=0; i<a.length(); i++) {
result.add(i,list_a[i],list_b[i]);
}
既然您接受了您的结果可以是包含值元组的字典(或列表),请试试这个:
>>> list_a = ['A', 'B', 'C']
>>> list_b = ['X', 'Y', 'Z']
>>> idx_start = 100
>>>
>>> result_list = list(enumerate(zip(list_a, list_b), start=idx_start))
>>> result_dict = dict(enumerate(zip(list_a, list_b), start=idx_start))
>>>
>>> print (result_list)
[(100, ('A', 'X')), (101, ('B', 'Y')), (102, ('C', 'Z'))]
>>> print (result_dict)
{100: ('A', 'X'), 101: ('B', 'Y'), 102: ('C', 'Z')}