Функция добавления, не дающая желаемых результатов в python - PullRequest
0 голосов
/ 24 мая 2019

приведенный ниже код не дает желаемых результатов, как указано ниже.Я перепробовал много перестановок без успеха.

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

Ответы [ 3 ]

1 голос
/ 24 мая 2019

Это дает желаемый результат, хотя я все еще не понимаю цели.

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)
1 голос
/ 24 мая 2019

Я думаю, что вы пытаетесь достичь, это

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 во внешнем цикле.В противном случае вы добавляете больше значений в тот же старый список, который добавляется три раза.

0 голосов
/ 24 мая 2019
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)

Вы должны очистить список, если не добавляете его после каждого цикла.

...