2016-04-10 18 views
0

Daha önce sorulup sorulmadığından emin değilim, ancak herhangi bir yardım bulamadım. İki boyutlu nesne listelerine sahip olduğum bir oyun yapıyorum, onları inventory ve loot olarak adlandırın. Onları karşılaştırmalı ve daha önce sahip olduğum şeyleri görmem gerek. Öğe, adımızın, miktarımızın ve tarifenin bulunduğu bir listedir.İki boyutlu liste nesnelerini karşılaştırarak

ben bunu nasıl ben bilemiyorum çünkü ben [0] Bir brainblock falan var [0] inv ama öğeye öğeyi karşılaştırmak gerekir, Ancak

ownd = [] 
for item in self.inv: 
    if item[0].name in loot: 
     ownd.append(item) 

gibi bir şey düşünüyordum . Birisi bana yardım edebilir veya beni doğru yöne yönlendirebilir. Teşekkürler!!

ps. Bazılarınızın bunu aptalca kolay bir soru olarak görmesini biliyorum ama ciddi olarak sıkışıp yardım istiyorum!

DÜZENLEME: sınıftan

Daha kodu: Sorunuzu doğru anlamak

class Inventory(object): 

    inv = [] 

    def __init__(self, name): 
     self.ownr = name 
     self.loc = "player_data/" + name 

    def add_item(self, item, amount): 
     for obj in self.inv: 
      if obj[0].name == item.name: 
       obj[1] = obj[1] + amount 
       return 1      
     self.inv.append([item, amount]) 
     return 0 

    def compare_to_loop(self, loot, amount): 
     ownd = [] 
     for item in self.inv: 
      if item[0].name in loot: 
       ownd.append(item) 
     return ownd 
+0

'kendini 'nereden geliyor? Cam 'inv' ve' loot' veri yapılarına bazı örnekler gönderir? –

+0

İç listelerin nasıl karşılaştırılmasını istersiniz? Belli bir element mi, yoksa hepsi mi? – RobertR

+0

Dikkatli kısmı yanlış kopyalamıştım, düzeltildi. Bunu yapmak istediğim isimleri karşılaştırmak ve aynı ada sahip olan öğeleri bu listeden seçmek – Duzzz

cevap

0

, sen listeleri envanterine sahip ve yağma ve tüm unsurları ile sahip olunan yeni bir liste oluşturmak istediğinizi her iki listede de aynı pozisyonda bulabilirsiniz?

O zaman bu olmalıdır ait Bu örnekte

inv = [1, 2, 3, 4, 5] 
loot = [2, 1, 3, 4, 6] 
owned = [i for i, l in zip(inv, loot) if i == l] 

çalışması gerekir [3, 4]?