python判断元素是不是在列表组中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python判断元素是不是在列表组中?相关的知识,希望对你有一定的参考价值。
已知有元素K45,和100个list列表。
列表名都是“list+数字”的格式。
我现在想要判断元素K45是否存在于这100个列表中。
要怎么判断K45是否存在于这100个列表中呢?
总不可能手动给逐个列表添加判断条件吧?
有没有什么简洁的方式解决呢?
list1 = ['A','B1','C','D6','E2','F4']
list2 = ['G','H','K45','J4','K','L7']
list3 = ['M3','N','O5','P','Q43','R']
……
list100= ['S2','W5','R8','T','W','E']
locals() 函数会以字典类型返回当前位置的全部局部变量。
对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。
def chuli():
list1 = ['A', 'B1', 'C', 'D6', 'E2', 'F4']
list2 = ['G', 'H', 'K45', 'J4', 'K', 'L7']
list3 = ['M3', 'N', 'O5', 'P', 'Q43', 'R']
# 在这里有100个列表
list100 = ['S2', 'W5', 'R8', 'T', 'W', 'E']
# locals() 函数会以字典类型返回当前位置的全部局部变量。
# 对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。
dc = locals()
for key, val in dc.items():
if 'K45' in val:
print(key)
chuli()
# 模拟环境
list1 = [1,2,3,4]
list2 = ['a','b','c','d']
list3 = ['1','2','3','4']
K45 = 'a'
# 在listx中寻找K45
# 如果listx不是list可能会产生错误
k = None
for i in range(1,101):
....k = 'list'.format(i)
....if k in locals().keys():
........if K45 in locals()[k]:
............print('K45 in '.format(k))
............break
else:
....print('can not find K45...')
追问大佬牛逼,只是这样只能识别单个元素的,要是多个列表存在多个k45,就行不通了啊
追答那就修改对K45是否在列表的判断和内部是否break啊,具体的实现总是根据具体的需求而定的,你提出的问题是【要怎么判断K45是否存在于这100个列表中】,这个部题的核心就是,一组列表的变量名有相似,要对它们做同样的处理,又不想重复的编写雷同的代码。解决办法是从用循环从locals()里找出它们,并对它们做同样的处理。至于是寻找一个K45还是检查它们的元素是否连续,或者其它的,那与核心问题没有太大的关系,最内层的if写法不同而已。
追问尴尬了,采纳错了。。。。本想采纳大佬的,按错了他人的答案,大佬抱歉了┭┮﹏┭┮
我重新向您提问了个问题,您随便答一下吧,我返回积分给您
这没什么困难的,如果要列出所有包含K45的列表,把最后三行去掉就可以了,如果K45也是一个列表,那么,就有两种情况:只要列表中包含K45有共同项就算找到,或者K45是列表的一个子集才算找到,它们的判断方式也是不同的,虽然区别不大,但终究是不同的,如果你连这个都不知道怎么写,那这个问题对你来说,属于“过于高深”的范围,暂时你还是要先去学python更基础的内容。
追问没办法,我本来就不是程序员啊,属于那种稍微懂点代码的门外汉,我只是在用python在自编一个随机生成器,如果换用java我能够轻松用数组的方式解决这个问题,但是java语序与格式太繁琐,所以才想转用python,结果python没有数组令我头痛。
参考技术B 可以先用locals函数获取当前位置的全部局部变量,然后再遍历这个返回的字典里的每一个列表。判断已知元素在某个列表就跳出遍历追答locals()可以字典形式返回当前所有变量,你可以去测试下,我现在没时间去测试了
参考技术C 先设一个n,变量n的值为零,然后通过以下代码,进行判断#使用for循环历遍1到100
for i in range(1,100+1):
if "k45"in list i:
print(list_i)追问
你说得都不清不楚的,要是我会码这个代码,我还用提问?
追答嗯……哪里不清楚?
试判断所有列表中,有哪些有k45吗
如果有不清楚的追问,没有的华话望采纳
追问list_i?
这个如何做成变量,就是卡在这里了。
这个又不像java一般拥有数组功能。
不好意思,手机刚刚没电了
其实只要把循环中的变量i
变成字符串再加上list形成新的字符串后再改为列表类型就可以了
。。。我就是不会码这个代码,你这样说明我真采纳不了,我还是需要完整代码才能懂
python判断列表中是不是有重复元素
举个栗子:
原数组长度,与去重后的数据,判断长度,长度相等,则证明无重复项,不相等就说明有重复项
str=[1,2,3,4,5]if len(str)==len(set(str)):
print "no dump"
else:
print "dump" 参考技术A list_no = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in list_no:
if list_no.count(i) != 1:
print ("重复数为:"), i
print ("重复个数为:"), list_no.count(i)
break
以上是关于python判断元素是不是在列表组中?的主要内容,如果未能解决你的问题,请参考以下文章