我在python中有一个列表,类似于以下示例:
a = [[1,2,'aaa'] , [3,4,'nnnn']
如何仅说[1,2,*]来表示[1,2,'aaa']的索引,其中*表示不重要?换句话说,我要获取第一列为1且第二列为2且第三列的值不重要的项目的索引。
答案 0 :(得分:2)
您可以使用extended iterable unpacking:
a = [[1, 2, 'aaa'], [3, 4, 'nnnn']]
indices = [i for i, (first, second, *_) in enumerate(a) if (first, second) == (1, 2)]
print(indices)
输出
[0]
答案 1 :(得分:2)
您可以使用operator.itemgetter
作为扩展解决方案:
from operator import itemgetter
a = [[1,2,'aaa'] , [3,4,'nnnn']]
getter = itemgetter(0, 1) # get first and second items
indices = [idx for idx, item in enumerate(a) if getter(item) == (1, 2)] # [0]
答案 2 :(得分:0)
一个简单的循环如何?
async getAssignmentsOfTable(tableId, date = null) {
let stmt =
`SELECT *
FROM assignment a
WHERE a.dining_table_id = $1` + (date?' AND a.date = $2':'');
const params = date?[tableId, date]:[tableId];
const result = await this.db.query(stmt, params);
return result.rows.map(row => {
return new Assignment(
row.id,
row.dining_table_id,
row.guest_group_id,
row.date,
row.time
);
});
}