下面给出的代码不能给出下面指定的预期结果。我尝试了很多排列,但没有成功。
posLabels = ['abc', 'def', 'ab3','ab4', 'ab5']
senPosList = [('abc','def','ghi'),('jkl','mno','pqr','123'),
('stu','vwx')]
senVecList= []
senVec = []
posLabels[0] in senPosList[0]
for x in range(3):
for i in range(5):
if posLabels[i] in senPosList[x]:
senVec.append(1)
else:
senVec.append(0)
senVecList.append(senVec)
print(senVecList)
结果:
[[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
我想要senVecList = [[1, 1, 0, 0, 0],[0, 0, 0, 0, 0],[0, 0, 0, 0, 0]]
答案 0 :(得分:1)
我想你想做到的是这个
posLabels = ['abc', 'def', 'ab3','ab4', 'ab5']
senPosList = [('abc','def','ghi'),('jkl','mno','pqr','123'), ('stu','vwx')]
senVecList= []
for x in range(3):
senVec = []
for i in range(5):
if posLabels[i] in senPosList[x]:
senVec.append(1)
else:
senVec.append(0)
senVecList.append(senVec)
print(senVecList)
请注意,我们在外部循环中将一个空列表重新分配给senVec
。否则,您会将更多值附加到相同的旧列表中,该列表将被附加三次。
答案 1 :(得分:1)
这产生了所需的输出,尽管我仍然不明白目标。
pos_labels = ['abc', 'def', 'ab3', 'ab4', 'ab5']
sen_pos_list = [
('abc', 'def', 'ghi'),
('jkl', 'mno', 'pqr', '123'),
('stu', 'vwx')
]
sen_vec_list = [[int(p in s) for p in pos_labels] for s in sen_pos_list]
print(sen_vec_list)
答案 2 :(得分:0)
posLabels = ['abc', 'def', 'ab3','ab4', 'ab5']
senPosList = [('abc','def','ghi'),('jkl','mno','pqr','123'),('stu','vwx')]
senVecList= []
senVec = []
posLabels[0] in senPosList[0]
for x in senPosList:
for i in posLabels:
if i in x:
senVec.append(1)
else:
senVec.append(0)
senVecList.append(senVec)
senVec = [] #add this line to clear the list
print(senVecList)
如果您不清除列表,则必须在每次循环后继续添加列表。