Py学习  »  Python

Append函数在python中没有给出所需的结果

Frustrated • 5 年前 • 1395 次点击  

下面给出的代码没有给出下面指定的所需结果。我试了很多次排列都没有成功。

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]]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53469
 
1395 次点击  
文章 [ 3 ]  |  最新文章 5 年前
K-K
Reply   •   1 楼
K-K    6 年前
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)

wjandrea
Reply   •   2 楼
wjandrea    6 年前

这会产生所需的输出,尽管我仍然不了解目标。

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)
Boyan Hristov
Reply   •   3 楼
Boyan Hristov    6 年前

我想你想说的是

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 在外环。否则,您将把更多的值追加到同一个旧列表,该列表将被追加三次。