Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在地图中放置for循环?_Python - Fatal编程技术网

Python 在地图中放置for循环?

Python 在地图中放置for循环?,python,Python,我有下面的x,我想获取一个item==0的索引,比如下面的索引2: [['UNITED STATES', 'OHIO, USA'], ['NEW YORK, USA', 'UNITED STATES'], ['LYON, FRANCE', 'FRANCE', '0'] ['FRANCE']] 我知道如何用forloop来解决这个问题,但我想知道是否可以用map来做同样的事情 这不起作用: map(lambda y: i==0 for i in y, x) 对于循环解决方案: zero

我有下面的x,我想获取一个item==0的索引,比如下面的索引2:

[['UNITED STATES', 'OHIO, USA'],
 ['NEW YORK, USA', 'UNITED STATES'],
 ['LYON, FRANCE', 'FRANCE', '0']
 ['FRANCE']]
我知道如何用forloop来解决这个问题,但我想知道是否可以用map来做同样的事情

这不起作用:

map(lambda y: i==0 for i in y, x)
对于循环解决方案:

zero = []
for i, val in enumerate(x):
    for y, yval in enumerate(val):
        if yval == '0':
            zero.append(i)
map()。因此在这种情况下,使用
map()
所能做的最好的事情就是让它返回
[False,False,True,False]

filter()
可能更合适,但如果您只是在寻找一行解决方案,那么列表理解可能是最好的选择:

x = [['UNITED STATES', 'OHIO, USA'],
     ['NEW YORK, USA', 'UNITED STATES'],
     ['LYON, FRANCE', 'FRANCE', '0'],
     ['FRANCE']]
zero = [i for i, row in enumerate(x) if '0' in row]
下面是使用
filter()
时的外观:


请注意,在Python 3.x上
filter()
返回一个生成器而不是一个列表,因此,如果您希望结果是一个列表,您可能希望
zero=list(filter(…)

,您可以更干净地使用Python filter方法:

my_list.index(filter(lambda x: '0' in x, my_list)[0])
filter(lambda x:0'in x,my_list)[0]
返回包含0的第一项
my_list.index()
返回该项的索引

您应该使用
过滤器,而不是
映射

filter(lambda i: '0' in data[i], range(len(data))
但是,过滤器不被认为是pythonic。更清楚的是一份清单

[i for i in range(len(data)) if '0' in data[i]]
还可以使用enumerate删除索引变量

[i for i, row in enumerate(data) if '0' in row]

请指定您使用的是Python 2还是Python 3。答案可能不同,“不是pythonic”,然后是一行,通过索引进行迭代
filter()
的可读性通常不如列表comp,但在Python中,按索引进行迭代从来都不是正确的解决方案,更不符合Python的风格。
[i for i, row in enumerate(data) if '0' in row]