元组列表(让我们称之为A
):
[('Hey', 'b', 'c'),
('Waddup', 'd', 'e'),
('Cutie', 'f', 'g')]
我还有另一个元组列表(列表B
):
[('1', 'Hey', 'k'),
('2', 'Waddup', 'j'),
('3', 'Superman', 'h')]
我想迭代列表B
以查看列表x[0]
中的任何元组中的x
(列表A
中的B
)是否存在。我已经尝试了any
和all
内置插件,但它没有用。
if all(x[0] not in B for x in A):
return x[0]
基本上我应该得到的唯一值是'Cutie'
,因为它是列表A
中每个列表中唯一不在列表B
中的第0个元素。但是,我得到了该列表中的每个元素(我相信它按元素检查元素,而不是一次检查所有元素)。
编辑。让我们假设如果我的代码正常工作,它将返回x[0]
。
所以,它应该只返回'Cutie'
一次。相反,它返回:
'Hey'
'Hey'
'Waddup'
'Waddup'
'Cutie'
'Cutie'
'Cutie'
答案 0 :(得分:1)
我可能会使用sets(下面详细说明,您也可以将其合并为一行以避免临时设置):
@Database(entities = {Country.class}, version = 5, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase{
private static AppDatabase INSTANCE;
public abstract ClassDao classDao();
public abstract SessionDao sessionDao();
public abstract SectionDao sectionDao();
public static AppDatabase getDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context, AppDatabase.class, "edumiadatabase").fallbackToDestructiveMigration()
.build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
给
a_0 = set(t[0] for t in A)
b_1 = set(t[1] for t in B)
和
{'Cutie', 'Hey', 'Waddup'}
差异只是
{'Hey', 'Superman', 'Waddup'}
如果您希望将结果作为列表,则可以执行以下操作:
a_0 - b_1
{'Cutie'}
给出了
final_res = list(a_0 - b_1)
紧凑版本将是
['Cutie']
答案 1 :(得分:0)
这个怎么样:
>> [a[0] for a in A if all(a[0] not in b for b in B)]
['Cutie']