簡體   English   中英

無法使用Lambda在python中過濾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM