是否存在直接的方法?
if element in aList:
#get the element from the list
我在想这样的事情:
aList = [ ([1,2,3],4) , ([5,6,7],8) ]
element = [5,6,7]
if element in aList
#print the 8
答案 0 :(得分:3)
L = [([1, 2, 3], 4), ([5, 6, 7], 8)]
element = [5, 6, 7]
for a, b in L:
if a == element:
print b
break
else:
print "not found"
但听起来你想要使用字典:
L = [([1, 2, 3], 4), ([5, 6, 7], 8)]
element = [5, 6, 7]
D = dict((tuple(a), b) for a, b in L)
# keys must be hashable: list is not, but tuple is
# or you could just build the dict directly:
#D = {(1,2,3): 4, (5,6,7): 8}
v = D.get(tuple(element))
if v is not None:
print v
else:
print "not found"
请注意,虽然下面有使用 next 的更紧凑的表单,但我想象你的代码(而不是人为的例子)的实际情况是至少稍微复杂一些,所以使用阻止,如果和 else 使用多个语句变得更易读。
答案 1 :(得分:1)
(注意:这个答案是指问题文本,而不是代码中给出的示例,它不完全匹配。)
打印元素本身没有任何意义,因为您已在测试中使用它:
if element in lst:
print element
如果你想要索引,有一个索引方法:
if element in lst:
print lst.index(element)
而且,由于您想要循环查看列表并使用值和索引执行操作,因此您可能会问这个,请务必使用枚举惯用法:
for i, val in enumerate(lst):
print "list index": i
print "corresponding value": val
答案 2 :(得分:1)
>>> aList = [ ([1,2,3],4) , ([5,6,7],8) ]
>>> element = [5,6,7]
如果您只想检查第一个元素是否存在
>>> any(element==x[0] for x in aList)
True
找到相应的值
>>> next(x[1] for x in aList if element==x[0])
8
答案 3 :(得分:0)
>>> aList = [ ([1,2,3],4) , ([5,6,7],8) ]
>>> for i in aList:
... if [5,6,7] in i:
... print i[-1]
...
8
答案 4 :(得分:0)
[5, 6, 7]
不您显示的aList
项目,因此if
将失败,而您提出的问题与此无关。更一般地说,无论如何,隐含在这样的if
中的循环抛弃了索引。让代码片段工作的一种方法是(而不是if
)使用类似的东西(Python 2.6或更高版本 - 如果您需要处理不同的版本,请鸣喇叭):
where = next((x for x in aList if x[0] == element), None)
if where:
print(x[1])
更一般地说,next
和print
中的表达式必须取决于aList
的确切“细粒度”结构 - 在您的示例中,x[0]
和x[1]
工作得很好,但在一个稍微不同的例子中,你可能需要不同的表达方式。没有“通用”方式完全忽略了数据的实际结构和“无论如何都神奇地工作”! - )
答案 5 :(得分:0)
一种可能的解决方案。
aList = [ ([1,2,3],4) , ([5,6,7],8) ]
element = [5,6,7]
>>> print(*[y for x,y in aList if element == x])
8
答案 6 :(得分:0)
你问题中的代码有点奇怪。但是,假设您正在学习基础知识:
实际上很简单:list.index(element)
。当然假设元素只出现一次。如果它出现不止一次,您可以使用额外的参数:
list.index(element, start_index)
:此处它将从start_index
开始搜索。还有:
list.index(element, start_index, end_index)
:我认为这是自我解释。
如果你在一个列表上循环,并且想要在索引和元素上循环,那么pythonic方式是enumerate
列表:
for index, element in enumerate(some_list):
# here, element is some_list[index]
这里,enumerate
是一个获取列表并返回元组列表的函数。假设您的列表为['a', 'b', 'c']
,然后enumerate
将返回:[ (1, 'a'), (2, 'b'), (3, 'c') ]
当你迭代它时,每个项目都是一个元组,你可以解压缩那个元组。
元组解包基本上是这样的:>>> t = (1, 'a')
>>> x, y = t
>>> t
(1, 'a')
>>> x
1
>>> y
'a'
>>>