Python'da aşağıdakileri nasıl yapabilirim? EsasenPython'un listesi kavramasında/dışındaysa?
row = [unicode(x.strip()) for x in row if x is not None else '']
:
- boş dizeleri ile tüm Nones değiştirin ve sonra
- bir işlevi yürütmek.
Python'da aşağıdakileri nasıl yapabilirim? EsasenPython'un listesi kavramasında/dışındaysa?
row = [unicode(x.strip()) for x in row if x is not None else '']
:
Tamamen bu sadece bir sipariş mesele, bunu yapabilir: Bu aslında farklı bir dil yapısı kullandığı
[ unicode(x.strip()) if x is not None else '' for x in row ]
Not Bir conditional expression, kendisi comprehension syntax parçası değildir if
iken for…in
'dan sonra liste anlamanın bir parçasıdır ve kaynağın yinelenen filtresindeki öğelerine kullanılır.
Koşullu ifadeler, bazı koşullara göre iki ifade değeri arasında seçim yapmak istediğiniz her durumda kullanılabilir. Bu, ternary operator ?:
that exists in other languages ile aynıdır.
value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')
if/else işte burada "üçlü operatör" sözdizimi olduğunu ve anlama sözdizimini listelemediğini unutmayın. –
OP'nin önceki sorusu üzerine, Adam'ın açıklaması çok önemli! – delnan
Bu yüzden, üçlü operatörü parantez içine koymayı tercih ediyorum, bu sadece bir anlama değil, normal bir anlatımın daha açık olduğunu ortaya koyuyor. –
Tek yönlü:
def change(f):
if f is None:
return unicode(f.strip())
else:
return ''
row = [change(x) for x in row]
sonra olsa da vardır: Örneğin
row = map(change, row)
Veya bir lambda satır içi kullanabilirsiniz.
>>> print(", ".join(["ha" if i else "Ha" for i in range(3)]) + "!")
Ha, ha, ha!
Bu if i
0
ve fonksiyon range()
tarafından üretilen tüm diğer değerleri için True
için False
değerlendirir ve boşlukta:
Bu, aynı zamanda, "if" ifadesinden veya "else" deyim bloğundaki koddan olası istisnaları işlediğinizde kullanmak için iyi bir (belki de sadece) tekniğidir. Kabul edilen cevap basit vakalar için daha iyidir. – martineau
Bu, okunan bir anlamada kullanmaktan çok daha kolaydır. –
Burada bir başka örnektir. Bu nedenle aşağıdaki gibi liste anlama değerlendirir:
>>> ["ha" if i else "Ha" for i in range(3)]
['Ha', 'ha', 'ha']
[? mümkün bir piton liste anlama 'başka' kullanmayı mı] arasında
olası yinelenen (http://stackoverflow.com/questions/2951701/is-it- olası-kullanım-else-in-a-python-liste-anlama) –