如何在Python中从列表中隔离值?

如何在Python中从列表中隔离值?,python,list,methods,Python,List,Methods,我有几张我正在调查的清单。我被困在某个点上: D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1] 假设这是一个列表。我需要从列表D中分离出一个新列表。我们可以说我想过滤那些1;但我没办法 如果我使用索引方法,如: D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1] E = [] for i in D: if not i == 1: E.append(D.index(i)) prin

我有几张我正在调查的清单。我被困在某个点上:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]
假设这是一个列表。我需要从列表D中分离出一个新列表。我们可以说我想过滤那些1;但我没办法

如果我使用索引方法,如:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]

E = []

for i in D:
    if not i == 1:
        E.append(D.index(i))

print(E)
输出是:[3,4,10,3]。我需要的是[3,4,10,11]。由于D[3]处的值和D[11]处的值相同,python不允许我获取第二个值。我如何解决这个问题

非常感谢你的帮助


谢谢。

您可以使用条件列表理解D中的值,并获得与您的条件匹配的值的索引位置

>>> [idx for idx, val in enumerate(D) if val != 1]
[3, 4, 10, 11]
请注意,您还可以使用在这些索引位置创建值生成器

>>> list(filter(lambda val: val != 1, D))
[2, 5, 3, 2]

您可以使用条件列表理解D中的值,并获取与您的条件匹配的值的索引位置

>>> [idx for idx, val in enumerate(D) if val != 1]
[3, 4, 10, 11]
请注意,您还可以使用在这些索引位置创建值生成器

>>> list(filter(lambda val: val != 1, D))
[2, 5, 3, 2]
使用index函数确实总是返回第一次出现的情况。从:

list.indexx[,start[,end]]

返回值等于x的第一项列表中从零开始的索引。如果没有此类项,则引发ValueError

我们可以将此功能与结合使用,以获得您想要的:

[index for index, value in enumerate(D) if value != 1]
# [3, 4, 10, 11]
使用index函数确实总是返回第一次出现的情况。从:

list.indexx[,start[,end]]

返回值等于x的第一项列表中从零开始的索引。如果没有此类项,则引发ValueError

我们可以将此功能与结合使用,以获得您想要的:

[index for index, value in enumerate(D) if value != 1]
# [3, 4, 10, 11]

您可以用多种方式编写此程序。我将首先尝试对您的示例进行最小的修改:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]

E = []

for i in range(len(D)):
    if D[i] != 1:
        E.append(i)

print(E)
但是,还有一种更短/更简单的单线解决方案:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]
E = [i for i in range(len(D)) if D[i]!=1]
print(E)

您可以用多种方式编写此程序。我将首先尝试对您的示例进行最小的修改:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]

E = []

for i in range(len(D)):
    if D[i] != 1:
        E.append(i)

print(E)
但是,还有一种更短/更简单的单线解决方案:

D = [1, 1, 1, 2, 5, 1, 1, 1, 1, 1, 3, 2, 1, 1]
E = [i for i in range(len(D)) if D[i]!=1]
print(E)

您似乎想列出非1值的索引,而不是值本身,但您在问题中并没有这样说。尝试研究enumerate函数并循环enumerate DYou似乎想列出非1值的索引,而不是值本身,但在问题中您实际上并没有这样说。非常尝试研究枚举函数和枚举数据链上的循环;非常感谢,;