在 Python 中查找元素的列表枚举

Enumeration of a list for finding elements in Python

在 python 中如何遍历元素列表并查找列表中是否存在我需要的元素。

如果在列表中找到其中任何一个,则打印,否则说没有找到元素。 (& 在最后断言我的代码)

我只想从列表中搜索和查找必需的 3 个元素,即 'Name'、'Year' 和 'City_id'。

最后用 foundcount 断言,以便测试失败或通过。

这是我的代码:

list = [ 'Name, 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time']

reqVal = [ 'Name', 'Year', 'City_id' ] # items in List - if present or not
foundCount = 0

def isValInList():
    for reqVal in enumerate(list):
        if reqVal in list :
            print("Yes, %s required item is found in List : ", reqVal)
            foundCount += 1
        else:
            print('No required items are found in list')
            break


        assert (foundCount == 0)

isValInList()

所以目前当我 运行 这段代码时,我得到

No required items are found in list

这明显是错误的,请您提出建议并纠正我做错的地方。谢谢。

你可以试试:

my_list = ['Name', 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time']
reqVal = ['Name', 'Year', 'City_id']

count_for_reqVal = {req_val : my_list.count(req_val) for req_val in reqVal}

print(count_for_reqVal)

#output : {'Name': 1, 'Year': 1, 'City_id': 1}

此外,我正在尝试重用您的代码:

list = [ 'Name', 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time']

reqVal = [ 'Name', 'Year', 'City_id', 'Test' ] # items in List - if present or not


def isValInList():
    foundCount = 0

    for val in reqVal:
        if val in list :
            print("Yes, '%s' required item is found in list" %  val)
            foundCount += 1

        else:
            print("No, '%s' required item is not in list" %  val)

    if foundCount == 0:
            print('No required items are found in list')



isValInList()

# output:
# Yes, 'Name' required item is found in list
# Yes, 'Year' required item is found in list
# Yes, 'City_id' required item is found in list
# No, 'Test' required item is not in list

你的问题不完全understandable.Be更specific.I写下我理解你的问题的答案。 list = [ '姓名, 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time']

reqVal = [ 'Name', 'Year', 'City_id' ] # items in List - if present or not
foundCount = 0

if 'Name' in list and 'Year' in list 'City_id' in list:
    print('All are present')

使用Set+info

list = { 'Name', 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time'}

reqVal = { 'Name', 'Year', 'City_id' } # items in List - if present or not

def isValInList():
    assert True, reqVal.issubset(list)

isValInList()

发生了很多事情: - 不要使用像 list 这样的预定义名称作为变量名 - 您需要将变量传递给函数 - 你的断言有什么用? - foundCount 必须声明为全局 - 枚举生成一个元组 - 休息有什么用?

这个有效:

alist = ['Name', 'Year', 'City_id', 'Region_Id' , 'Location', 'Source', 'Time']

reqVal = ['Name', 'Year', 'City_id' ] # items in List - if present or not

def isValInList(alist, blist):
    global foundCount
    for num, entry_a in enumerate(alist):
        if entry_a in blist :
            print("Yes, %s required item is found in List : ", entry_a)
            foundCount += 1
        else:
            print('No required items are found in list')

isValInList(alist, reqVal)

如果我们想将列表转换为元组的可迭代列表(或者根据条件检查获取索引,例如在线性搜索中您可能需要保存最小元素的索引),您可以使用枚举()函数。

示例:

# Python3 code to iterate over a list 
list = [1, 3, 5, 7, 9] 

# Using enumerate() 
for i, val in enumerate(list): 
    print (i, ",",val) 

注意: 即使是方法#2 也可以找到索引,但是方法#1 不能(除非每次迭代都增加一个额外的变量)和方法#5给出了此索引的简明表示。

您正在迭代错误的列表:

for reqVal in enumerate(list):
    if reqVal in list :

尝试:

for item in reqVal:
    if item in list:
        print("Yes, %s required item is found in List : ", element)
        foundCount += 1

    else:
        print('No required items are found in list')

这样就不需要枚举了。 我看不出在遍历所有项目之前打破循环的意义。

此外,最好不要使用 "list" 作为 var 名称,因为这是 python 中的关键字。