>我有一个列表:
[['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]
如果我在变量中有字符串皇后,我将如何提取 0?
换句话说,我将如何表达:我想要列表中以 Queens 一词开头的第一个 int。
编辑:皇后乐队(和一般的弦乐(总是排在第一位。列表结构无法更改
IIUC 您可以使用以下列表理解。如果您对第一个整数感兴趣,只需索引子列表即可在'Queens'
第一个字符串时选择第二个值:
l = [['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]
[i[1] for i in l if i[0] == 'Queens']
# [0]
你可能只是蛮力破解它,我做一个例子很容易理解:
def find_in_3d(input, your_list):
for second_layer in your_list:
if input in second_layer:
return second_layer[1]
遍历列表,并检查条件是否在列表中存在皇后区,然后在输出列表中附加第二个元素
lst = [['EWR', 2, 3], ['Queens', 0, 5], ['Brooklyn', 1, 1] ]
ext_list = []
for l in lst:
if 'Queens' in l:
ext_list.append(l[1])
print(ext_list)
#[0]
如果你想要第一个int并且你不确定它会是什么索引,你可以使用列表推导和python内置filter()
函数进行如下。因为我们利用的是使用 generators
而不是lists
in out 列表理解,所以我们在找到第一个int
值或第一个值的最后一个句子是否Queens
后,总是会停止迭代。
x = next(next(filter(lambda x:isinstance(x, int), i)) for i in my_list if i[0] == 'Queens')
print(x) # -> 0