[英]Unable to filter in python using lambda
這是python代碼
languages = ["HTML", "JavaScript", "Python", "Ruby"]
print filter(lambda x: x == "Python",languages)
輸出為:
[u'Python']
u
來自哪里,如何避免它。
要求的輸出:
['Python']
更新::
我在代碼學院嘗試過這個。我猜dere是他們軟件中的錯誤。
您的輸入包含unicode
文本,而不是str
文本。 u''
表示unicode
文字。
這可能是正常現象,並且完全取決於您從中獲取languages
列表的位置 。 否則事情就開始運轉了 。
您鏈接到的CodeAcademy練習實際上已中斷 。 它向您顯示Python str
輸入,但其輸出使用unicode
。 您需要將其報告為錯誤。
您可以通過將所有內容映射到str
來解決該錯誤:
print filter(lambda x: x=='Python', map(str, languages))
或通過將filter
的輸出映射到str()
:
print map(str, filter(lambda x: x=='Python', languages))
在這種情況下有效,因為輸入僅使用ASCII字符。 通常,您可以通過指定編碼來將unicode
顯式編碼為str
,請參見Python Unicode HOWTO 。
直接轉換通過以下方式進行:
languages = ["HTML", "JavaScript", "Python", "Ruby"]
flt = filter(lambda x: x == "Python",languages)
print [str(X) for X in flt]
輸出量
['Python']
是的,簡單的str()
正在進行轉換。
u
代表unicode,您可以使用str(filter(...))
將其轉換為普通字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.