Python 使用map函数获取列表中奇数处的列表元素

Python 使用map函数获取列表中奇数处的列表元素,python,list,python-2.7,dictionary,Python,List,Python 2.7,Dictionary,这是我一直在尝试的代码。它读取一个包含两个列表的.txt文件。分别由D1和D2读取。在D2中,我只需要奇数位置的元素。下面给出了我尝试过的代码,但它没有给我所需的输出。代码如下: import cv2 import numpy fo = open("Test_input0.txt","r") D1=[map(int, fo.readline().split())] D2=[map(int, fo.readline().split())] d2 = D2[1::2] print d2 它

这是我一直在尝试的代码。它读取一个包含两个列表的.txt文件。分别由D1和D2读取。在D2中,我只需要奇数位置的元素。下面给出了我尝试过的代码,但它没有给我所需的输出。代码如下:

import cv2
import numpy


fo = open("Test_input0.txt","r")
D1=[map(int, fo.readline().split())]
D2=[map(int, fo.readline().split())]
d2 = D2[1::2]


print d2
它给出的输出是:

[]

.txt文件内容的格式如下:

1 2 1 3 7 6 2 9 8 1 5 4
5 10 6 11 15 15                
这应该起作用:

fo = open("Test_input0.txt","r")
D1 = [int(x) for x in next(fo).split()]
D2 = [int(x) for x in next(fo).split()]
D2 = D2[1::2]
您唯一的问题是额外的
[]

D1= map(int, fo.readline().split())
D2= map(int, fo.readline().split())
更改:

D1=[map(int, fo.readline().split())]
进入:

它也应该可以工作。

map()
返回一个列表,然后用
[]
将其包装到另一个列表中。当你尝试

d2 = D2[1::2]
您正试图从索引1中分割包含单个项的列表。因此,将返回一个空列表

您可以通过移除周围的
[]
来更正它:

D1= map(int, fo.readline().split())
D2= map(int, fo.readline().split())
或者,通常被认为是更具Python风格的列表理解:

D1 = [int(x) for x in fo.readline().split()]
D2 = [int(x) for x in fo.readline().split()]
D2 = [int(x) for x in fo.readline().split()[1::2]]
现在
D2[1::2]
应该在奇数索引处为您提供
D2
中的项目

您甚至可以在一个列表中组合这两个操作:

D1 = [int(x) for x in fo.readline().split()]
D2 = [int(x) for x in fo.readline().split()]
D2 = [int(x) for x in fo.readline().split()[1::2]]

它的优点是只将所需的值转换为整数。

发布示例文件内容和您得到的输出。如果您使用的是python2,则不要将
[
]
放在后面。单独使用
D2=map(int,fo.readline().split())
。现在您有了一个包含一个元素的列表,另一个来自map的列表。所以显然
[1::2]
不会work@BhargavRao除删除方括号外,是否有其他方法来删除此错误?除删除方括号外,是否有其他方法来删除此错误?有显示的列表理解方法,但如果您不喜欢,移除多余的支架有什么问题??另一种方法是使用:
d2=d2[0][1::2]
访问列表的第一项(也是唯一一项)。最好的方法是使用列表理解。除了删除方括号之外,还有其他方法来删除此错误吗?