Apa cara tercepat untuk mengetahui apakah ada nilai dalam daftar (daftar dengan jutaan nilai di dalamnya) dan apa indeksnya?
Saya tahu bahwa semua nilai dalam daftar adalah unik seperti dalam contoh ini.
Metode pertama yang saya coba adalah (3,8 detik dalam kode asli saya):
a = [4,2,3,1,5,6]
if a.count(7) == 1:
b=a.index(7)
"Do something with variable b"
Metode kedua yang saya coba adalah (2x lebih cepat: 1,9 detik untuk kode asli saya):
a = [4,2,3,1,5,6]
try:
b=a.index(7)
except ValueError:
"Do nothing"
else:
"Do something with variable b"
Metode yang diusulkan dari pengguna Stack Overflow (2,74 detik untuk kode asli saya):
a = [4,2,3,1,5,6]
if 7 in a:
a.index(7)
Dalam kode asli saya, metode pertama membutuhkan 3,81 detik dan metode kedua membutuhkan 1,88 detik. Ini peningkatan yang bagus, tetapi:
Saya seorang pemula dengan Python / scripting, dan apakah ada cara yang lebih cepat untuk melakukan hal yang sama dan menghemat lebih banyak waktu pemrosesan?
Penjelasan lebih spesifik untuk aplikasi saya:
Di Blender API saya bisa mengakses daftar partikel:
particles = [1, 2, 3, 4, etc.]
Dari sana, saya dapat mengakses lokasi partikel:
particles[x].location = [x,y,z]
Dan untuk setiap partikel saya menguji apakah ada tetangga dengan mencari setiap lokasi partikel seperti:
if [x+1,y,z] in particles.location
"Find the identity of this neighbour particle in x:the particle's index
in the array"
particles.index([x+1,y,z])
bisect
modul