在列表python中查找列表

在列表python中查找列表,python,algorithm,list,Python,Algorithm,List,我有一个包含其他列表作为元素的列表 mylist=[ [1, 'Asfoor', 'a', 'b', 'c'], [2, 'deek', 'j', 'a', 'k'], [3, 'bata', 'k', 'a', 'p'], [4,'farkha','v','m','k'] ] 现在,我想在上面的列表中找到另一个列表元素“a”和“k”,并需要以特定格式输出 second list=['a','k'] 例

我有一个包含其他列表作为元素的列表

mylist=[
         [1, 'Asfoor', 'a', 'b', 'c'], 
         [2, 'deek', 'j', 'a', 'k'], 
         [3, 'bata', 'k', 'a', 'p'],
         [4,'farkha','v','m','k']
       ]
现在,我想在上面的列表中找到另一个列表元素“a”和“k”,并需要以特定格式输出

second list=['a','k']
例如,如果第一个列表的任何元素包含第二个列表的“a”元素,则输出列表应如下所示:

['a',
     [
         [1, 'Asfoor', 'a', 'b', 'c'], 
         [2, 'deek', 'j', 'a', 'k'], 
         [3, 'bata', 'k', 'a', 'p']
     ]
]
同样,如果列表包含“k”,则输出如下:

['k',
         [2, 'deek', 'j', 'a', 'k'], 
         [3, 'bata', 'k', 'a', 'p'],
         [4,'farkha','v','m','k']
]

非常感谢任何好的python方法。

您可以这样做:

def found(a, key):
    return key in a:


keys = ['a', 'k']

final = []
for j in keys:
    final.append([j , [k for k in mylist if found(k, j)]])

# Or simply within list comprehension:
# final = [[j , [k for k in mylist if found(k, j)]] for j in keys]


print(final)
输出:

[['a',
  [[1, 'Asfoor', 'a', 'b', 'c'],
   [2, 'deek', 'j', 'a', 'k'],
   [3, 'bata', 'k', 'a', 'p']]],
 ['k',
  [[2, 'deek', 'j', 'a', 'k'],
   [3, 'bata', 'k', 'a', 'p'],
   [4, 'farkha', 'v', 'm', 'k']]]]

您可以测试字符串是否在列表中,如下所示:

for row in my_list:  # finding 'a' in list
    if 'a' in row:
        print(row)

for row in my_list:  # finding 'k' in list
    if 'k' in row:
        print(row)

打印该行需要使用“\t”(制表符)和一些其他字符,这些字符基于您所需的输出格式

您能演示一下自己在解决这个问题上所做的努力吗?更新了我的代码。@MohamedIbrahim是否要测试
k
是否出现在任何元素中,即使是
'deek'
等词也意味着包含了一行?或者,如果单字母
k
出现在最后3个单字母字符串中,您是否只希望将其包括在内。否,我只希望元素k出现在列表中,不使用wordshow,我可以动态执行此操作,而无需在代码中输入“a”和“b”键manually@MohamedIbrahim你知道变量是如何工作的吗?谢谢。现在我明白了clearlyOh否。
found()
函数计算布尔表达式,然后根据其值返回true或false。真的,
found(a,key):在a
中返回key就足够了。@MohamedIbrahim:两者都是正确的,但一个比另一个短得多。
print([sublist for sublist in mylist if 'a' in sublist])
# returns:
[
  [1, 'Asfoor', 'a', 'b', 'c'],
  [2, 'deek', 'j', 'a', 'k'],
  [3, 'bata', 'k', 'a', 'p']
]