我是Python新手,我想管理一些我创建的列表。因此,在列表A中,我有最后两位数字,在列表B中,我有000到999之间的数字。
对于列表A中的每一年,我想在列表B中添加每个数字,我想使用循环...
listA = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99']
listB = ['000', '001', '002', '003', ...]
* somethingsomething loop *
listC = ['00000', '00001', '00002', ...]
谢谢!
答案 0 :(得分:2)
from itertools import product
listA = ['00', '01', '02', '03']
listB = ['000', '001', '002', '003']
listC = [a + b for a, b in product(listB, listA)] # ['00000', '00001', '00002', ...]
product
函数迭代所提供的iterables的笛卡尔积(所有组合的k元组从每个列表中绘制一个)。字符串连接用于连接元组的元素(a + b
)。列表理解将它们全部放入了一个很大的范围内。列表。
答案 1 :(得分:1)
虽然itertools.product
很方便,但一个简单的嵌套理解也可以做到:
for
请注意,第一个 $("#text-box").mouseup(function () {
var el = document.getElementById("text-box");
getCaretCharacterOffsetWithin(el);
});
具有更宽的范围,与自然英语相比,这有时似乎是违反直觉的。
答案 2 :(得分:1)
你需要迭代listB
,所以你会这样做:
for itemB in listB:
然后对于每个项目,您需要将其与listA
中的每个元素进行匹配,这样您就可以在listA
上执行另一个嵌套循环。
for itemA in listA:
然后在两个循环中,您将拥有itemA
和itemB
的所有组合。所以你只需要连接它们并将它们添加到输出列表中。
ouptut = []
for itemB in listB:
for itemA in listA:
output.append(itemB + itemA)
另一个解决方案中提到的 itertools.product
可以为您提供更简洁的解决方案,因为它取代了两个for
循环。
答案 3 :(得分:0)
> Code to reproduce listA
listA = []
for i in range(0,10):
for j in range(0,10):
e = str(i)+str(j)
listA.append(e)
print(listA)
> Code to reproduce listB
listB = []
for i in range(0,10):
for j in range(0,10):
for k in range(0,10):
e = str(i)+str(j)+str(k)
listB.append(e)
print(listB)
> Now we just iterate over each element of listA and append one by one each element of listB, and keep appending the result to listC to get the final output list
listC = []
for i in listA:
for j in listB:
listC.append(i+j)
print(listC)
答案 4 :(得分:-4)
您可以使用inbuild函数zip()
例如:
class SumList():
def __init__(self, this_list):
self.mylist = this_list
def __add__(self, other):
new_list = [ x + y for x,y in zip(self.mylist, other.mylist)]
return SumList(new_list)
def __repr__(self):
return str(self.mylist)
cc = SumList([1,2,3,4])
dd = SumList([100,200,300,400])
ee = cc + dd
print(ee)