2012-12-23 27 views
6
L=[0,8,5,6,4,5,6,14,8] 

[4,5,6] dizinini döndürmek istiyorum (bu örnekte 4'ü döndürerek). Bu yerinePython'da bir listede bulunan birden çok öğenin dizinini nasıl döndürürüm?

def find_in_list(l, x): 
    for i in range(len(l) - len(x) + 1): 
     if l[i:i+len(x)] == x: 
      return i 
+4

Neden insanlar oy vermeye oy veriyor? Bu gayet meşru bir sorudur. – MyNameIsKhan

+0

Bence gerçek bir soru oyladığına inanan insanlardan değil. Ayrıca, sizden birisinin cevabına cevabınız, sorunuzu açık bir şekilde ortaya koyarken, bu hiç de az çaba gerektirmiyor. – Woot4Moo

+0

yinelenen: http://stackoverflow.com/questions/7627548/find-sub-list-inside-a-list-in-python – Chronial

cevap

1

Kullanımı:

+0

Tüm önerilen çözümlerin en hızlı çalışma süresine sahip gibi görünüyor ve tek katmanlı – MyNameIsKhan

+1

'lambda c: str (c)' sadece 'str' olarak yazılabilir –

+0

Oh evet doğru konum – jackcogdill

2

İşte bunu uygulamaya bir yolu

' '.join(map(str,L)).index(' '.join(map(str,x)))/2 

DÜZENLEME: Teşekkürler haha ​​

aptalca bir hata fark için isbadawi ve büyük bir hata işaret için solilo için
+0

Şu anda yaptığım şey bu; Bunu kısa bir tek katlı hale getirecek yerleşik bir Python işlevi var mı? – MyNameIsKhan

1
In [193]: min(i for i in range(len(L)) if L[i:i+len(key)] == key) 
Out[193]: 4 

In [194]: L=[0,8,5,6,4,5,6,14,8] 

In [195]: key=[4,5,6] 

In [196]: min(i for i in range(len(L)) if L[i:i+len(key)] == key) 
Out[196]: 4 
İlgili konular