28 Kasım 2012, ÇARŞAMBA
Nasıl olursa listeme tüm 1'ler var. Python:
Daha iyi bir yol arıyorum, liste üreteçleri kullanıyor olabilir?
>>> x = [1, 1, 1, 1, 1, 1]
>>> x
[1, 1, 1, 1, 1, 1]
>>> for i in x:
... if i!=1:
... print "fail"
...
>>>
>>> x = [1, 1, 1, 1, 1, 0]
>>> for i in x:
... if i!=1:
... print "fail"
...
fail
>>>
CEVAP
28 Kasım 2012, ÇARŞAMBA
Henüz daha olası yöntemleri:
x == [1] * len(x)
list(set(x)) == [1]
tuple(set(x)) == (1,)
Bazı zamanlama sonuçları:
all(el==1 for el in x) [1.184262990951538, 1.1856739521026611, 1.1883699893951416]
y = set(x);len(y) == 1 and y.pop() == 1 [0.6140780448913574, 0.6152529716491699, 0.6156158447265625]
set(x) == set([1]) [0.8093318939208984, 0.8106880187988281, 0.809283971786499]
not(bool(filter(lambda y: y!=1, x))) [1.615243911743164, 1.621769905090332, 1.6134231090545654]
not any(i!=1 for i in x) [1.1321749687194824, 1.1325697898864746, 1.132157802581787]
x == [1]*len(x) [0.3790302276611328, 0.3765430450439453, 0.3812289237976074]
list(set(x)) == [1] [0.9047720432281494, 0.9006211757659912, 0.9024860858917236]
tuple(set(x)) == (1,) [0.6586658954620361, 0.6594271659851074, 0.6585478782653809]
Ve çünkü PyPy üzerinde: neden olmasın?
all(el==1 for el in x) [0.40866899490356445, 0.5661730766296387, 0.45672082901000977]
y = set(x);len(y) == 1 and y.pop() == 1 [0.6929471492767334, 0.6925959587097168, 0.6805419921875]
set(x) == set([1]) [0.956063985824585, 0.9526000022888184, 0.955935001373291]
not(bool(filter(lambda y: y!=1, x))) [0.21160888671875, 0.1965351104736328, 0.19921493530273438]
not any(i!=1 for i in x) [0.44970107078552246, 0.509315013885498, 0.4380669593811035]
x == [1]*len(x) [0.5422029495239258, 0.5407819747924805, 0.5440030097961426]
list(set(x)) == [1] [1.0170629024505615, 0.9520189762115479, 0.940842866897583]
tuple(set(x)) == (1,) [0.9174900054931641, 0.9112720489501953, 0.9102160930633545]
Bunu Paylaş: