W skrócie, co próbuję zrobić, jest oparta na liście objects = ["bison", "elephant", "horse", "ibis", "sky", "mountain", "building", "flower", "sand", "tree", "field", "road", "tower", "ocean", "cliff", "waterfall"] Uzyskaj numer 1, jeśli ta lista ciągów zawiera subskryganie elementów z innej listy w przeciwnym razie 0 Na przykład mam kolejną nazwę listy jako Lista =['dusthaze-sky', 'rocky-mountain'], ponieważ zawiera niebo i góry Powinien wrócić [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Do czego mam teraz następujący kod

Lista = ['dusthaze-sky', 'rocky-mountain']
objects = ["bison", "elephant", "horse", "ibis", "sky", "mountain", "building", "flower", "sand", "tree", "field", "road", "tower", "ocean", "cliff", "waterfall"]
returnList = []
for obj in objects:
  for element in lista: returnList.append(1) if any(map(obj in element, obj)) else returnList.append(0)

Co daje mi następujący błąd

Traceback (most recent call last):
  File "main.py", line 22, in <module>
    printBoolArray(readObjects)
  File "main.py", line 10, in printBoolArray
    for m in lista: returnList.append(1) if any(map(n in m, m)) else returnList.append(0)
TypeError: 'bool' object is not callable

Mam nadzieję, że można zrobić coś, co można zrobić, a jeśli to możliwe, chciałbym to zrobić za pomocą dowolną funkcję

0
lucasbbs 16 kwiecień 2021, 04:13

1 odpowiedź

Najlepsza odpowiedź

Być może coś wzdłuż tych linii będzie działać dla Ciebie:

Lista = ['dusthaze-sky', 'rocky-mountain']
objects = ["bison", "elephant", "horse", "ibis", "sky", "mountain", "building", "flower", "sand", "tree", "field", "road", "tower", "ocean", "cliff", "waterfall"]
returnList = []
for obj in objects:
    if any(obj in elem for elem in Lista):
        returnList.append(1)
    else:
        returnList.append(0)

print(returnList)
Out: [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Uwaga, nie jest to najbardziej skuteczny sposób na to, ale rozwiązanie może się skomplikować, jeśli spróbujemy go zoptymalizować. Zapraszamy do upuszczania komentarza, jeśli masz pytania.

A oto jeden liniowiec, jeśli lubisz wymienia listę:

returnList = [int(any(obj in elem for elem in Lista)) for obj in objects]
0
LPR 16 kwiecień 2021, 01:18