SORU
27 EYLÜL 2011, Salı


Bir değeri olmadığını kontrol etmek için hızlı bir yol listesi var

Eğer bir değeri bir liste (bu değerler, milyon dolarlık bir liste) varsa ve dizin ne olduğunu bilmek için en hızlı yol arıyorum? Listedeki tüm değerleri benim gibi eşsiz olduğunu biliyorum.

Çalışıyorum benim ilk yöntem(benim gerçek kod 3.8 sn):

a = [4,2,3,1,5,6]

if a.count(7) == 1:
    b=a.index(7)
    "Do something with variable b"

Çalışıyorum benim ikinci yöntem (2 kat daha hızlı:1.9 benim gerçek kod sn):

a = [4,2,3,1,5,6]

try:
    b=a.index(7)
except ValueError:
    "Do nothing"
Else:
    "Do something with variable b"

S. O. kullanıcının (2.74 benim gerçek kod sn) yöntemleri önerdi:

a = [4,2,3,1,5,6]
if 7 in a:
    a.index(7)

Benim gerçek kodda , ilk yöntemi sec ve ikinci yöntemleri 3.81 1.88 saniye. İyi bir gelişme ama

Python/betik ile bir acemi değilim ve eğer hızlı bir şekilde aynı şeyleri yapar ve işlem daha fazla zaman kazanmak için var olup olmadığını öğrenmek istiyorum?

Benim uygulama için daha belirli bir açıklama:

Blender bir API olabilir parçacıklar listesine erişim:

particles = [1,2,3,4...etc.]

Oradan , o konuma erişebilirsiniz:

particles[x].location = [x,y,z]

Ve eğer bir komşu arayarak varsa her parçacık için test parçacıklar gibi, her yerde

if [x 1,y,z] in particles.location
    "find the identity of this neighbour particles in x:the index 
    of the particles array"
    particles.index([x 1,y,z])

CEVAP
27 EYLÜL 2011, Salı


7 in a

En hızlı ve en temiz şekilde yapmak.

Ayrıca hızlı üyelik test kurtaracak daha senin liste daha uzun sürebilir set, ama bu inşa seti kullanarak düşünebilirsiniz. Emin olmak için tek kriter iyi. (bu da ihtiyacınız ne bağlıdır)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • ipsy

    ipsy

    1 EKİM 2012