【问题标题】:Append Function not giving desired results in python附加函数在 python 中没有给出想要的结果
【发布时间】:2019-05-23 23:52:28
【问题描述】:

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

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

【问题讨论】:

  • posLabels[0] in senPosList[0] 已评估但未打印或其他任何内容。对吗?
  • edit 并描述您要做什么。我已经读了几次这个问题,但我仍然不明白。请参阅How to Ask 了解更多指示。
  • 只做[[1 if y in x else 0 for y in posLabels] for x in senPosList]

标签: python-3.x for-loop nested


【解决方案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。否则,您会将更多值附加到被附加 3 次的同一个旧列表中。

【讨论】:

    【解决方案2】:

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

    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)
    

    【讨论】:

      【解决方案3】:
      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)
      

      如果不是,您必须在每次循环后继续添加列表。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-25
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 2021-03-02
      • 1970-01-01
      • 2017-08-25
      相关资源
      最近更新 更多