0

假设我有一个包含字符串的列表:ta, fa, ba, ut,让我们调用我们的列表some_list = ['ta', 'fa', 'ba', 'ut']

我想要做的是,用伪代码:

for x in some_list:
    if unicode(x, 'utf-8') == another_unicoded_string:
       do something:

但我想以pythonic方式使用列表理解来做到这一点:

所以这就是我的做法,但这并没有真正奏效:

if [x for x in some_list if unicode(x, 'utf-8') == 'te']:

在上述情况下,它不应该匹配,因此根据我写的内容不应该真正进入循环它不会以任何一种方式进入语句:

4

2 回答 2

0

尝试:

for x in (x for x in some_list if unicode(x, 'utf-8') == 'te'):
    do_something

或(效率较低-感谢jamaylak的建议),

for x in [x for x in some_list if unicode(x, 'utf-8') == 'te']:
    do_something
于 2013-04-24T18:26:42.593 回答
0

你正在做什么返回一个过滤列表。所以我的猜测是你正在尝试做这样的事情。

[do_something(x) for x in some_list if unicode(x, 'utf-8') == u'te']

稍微详细一点:

>>> some_list
['ta', 'fa', 'ba', 'te', 'ut', 'te']
>>> [x for x in some_list if unicode(x, 'utf-8') == u'te']
['te', 'te']
>>> [unicode(x) for x in some_list if unicode(x, 'utf-8') == u'te']
[u'te', u'te']
于 2013-04-24T18:26:49.467 回答