list1あなたはこのようから名のセットを作ることができます
>>> {x.split()[0] for x in list1}
set(['john', 'jennifer', 'elizabeth', 'steven'])
このようなさまざまな設定操作を行うことができます
>>> list2 = ['john','jennifer']
>>> set(list2).difference(x.split()[0] for x in list1)
set([]) # ie False
>>> list3 = ['jack','jennifer']
>>> set(list3).difference(x.split()[0] for x in list1)
set(['jack']) # ie True
あなたが本当にboolsを必要とするならば...
>>> bool(set(list2).difference(x.split()[0] for x in list1))
False
>>> bool(set(list3).difference(x.split()[0] for x in list1))
True
またはその逆...
>>> bool(not set(list2).difference(x.split()[0] for x in list1))
True
>>> bool(not set(list3).difference(x.split()[0] for x in list1))
False
新しいlist4テストケースの場合
>>> list4 = ['john mayer', 'jennifer']
>>> {x.split()[0] for x in list1}.union(list1) > set(list2)
True
>>> {x.split()[0] for x in list1}.union(list1) > set(list3)
False
>>> {x.split()[0] for x in list2}.union(list2) > set(list3)
False
>>> {x.split()[0] for x in list1}.union(list1) > set(list4)
True