【问题标题】:Python list: check if all items are the same or notPython列表:检查所有项目是否相同
【发布时间】:2018-11-10 11:18:10
【问题描述】:

我有一个 python 字符串列表,想检查所有列表项的值是否相同。

我尝试使用条件if/then,但是我需要检查列表值的所有组合,如果列表有很多项目,那么需要很多硬代码。

if item1 != item1 and item1 != item2 and item1 !=item2 ....... :
    check='wrong'
else:
    check= 'correct'

输入:

listOfStrings = ['ep:1000' , 'ep:4444', 'ep:1000', 'ep:1000', 'ep:1000', 'ep:1000']

更新

例子:

CORRECT_LIST = ['ep:1000' , 'ep:1000', 'ep:1000', 'ep:1000', 'ep:1000', 'ep:1000']

在正确的列表中所有项目的值都相同,那么我的列表是正确的

WRONG_LIST = ['ep:1000' , 'ep:4444', 'ep:1000', 'ep:1000', 'ep:1000', 'ep:1000']

错误列表中的WRONG_LIST 不是所有项目值字符串都是一些

【问题讨论】:

  • "我想检查所有列表项的值是否都是一些。",这是什么意思?
  • 你能举个例子解释一下吗?
  • Austin 和 Willem Van Onsem 我更新了我的问题

标签: python list


【解决方案1】:

您提供的代码 sn-p 看起来有点奇怪。但如果我理解正确,您正在尝试检查列表中唯一值的数量。

一种方法是将其转换为集合并检查其长度。

len(set(listOfStrings))

已更新以包含来自@iGian 的工作代码 sn-p:

check = 'wrong' if len(set(list_of_strings)) > 1 else 'correct'

【讨论】:

  • check = 'wrong' if len(set(list_of_strings)) > 1 else 'correct'
【解决方案2】:

这会将列表中的每个元素与第一个元素进行比较:

listOfStrings = ['ep:1000' , 'ep:4444', 'ep:1000', 'ep:1000', 'ep:1000', 'ep:1000']
check = all(x == listOfStrings[0] for x in listOfStrings)

并为您的测试用例返回false

【讨论】:

    【解决方案3】:

    在正确的列表中所有项目的值都相同,那么我的列表是正确的

    如果要检查列表中的所有项目是否相同,可以检查列表集合的长度是否等于 1:

    len(set(listOfStrings)) == 1 
    

    集合的特点是每个元素都是唯一的,即该集合。

    【讨论】: