s = input( "请输入字符串:" )
专注于为中小企业提供成都网站设计、成都网站制作、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业浙江免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
st = set()
for i in range( len( s ) ):
if st.__contains__( s[i] ):
i1 = s.index( s[i] )
print( i1 )
print( s[i1:i1 + 3] )
break
else:
st.add( s[i] )
使用list的index方法可以找到list中第一次出现该元素的位置
l = ['a','b','c','c','d','c']
find='b'
l.index(find)
1
找出出现该元素的所有位置可以使用一个简单的表理解来实现
find = 'c'
[i for i,v in enumerate(l) if v==find]
[2, 3, 5]
代码如下:
def func1(num_list):
if len(num_list) != len(set(num_list)):
return True
else:
return False
if __name__ == '__main__':
num_list = [[1, 2, 3, 4], [6, 7, 8], [4, 5, 6, 6, 6]]
for one_list in num_list:
print(func1(one_list))
运行结果:
扩展资料
python对列表去重的几种方式:
1、直观方法,先建立一个新的空列表,通过遍历原来的列表,再利用逻辑关系not in 来去重。总结:这样可以做出来,但是过程不够简单。但是此方法保证了列表的顺序性。
2、利用set的自动去重功能,将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。
参考资料:python官网-Doc语法文档
这个问题有多种解法,最常见的是brute-force
也叫暴力枚举法,也就是把两个list当中的每个元素都取出来进行两两比较,直到找到相同元素。设第一个数组的长度为n,第二个数组的长度为m,则时间复杂度为O(n*m),空间复杂度为O(1)
但是个问题常见的解决方法是哈希表。在Python当中有Dictionary这种数据类型,其实是一个哈希表。运用这种数据类型,可以迅速检索到想要的元素。但这种方法需要存储一组元素,所以时间复杂度为O(n),空间复杂度为O(m)。
以下是程序:
def
find_same_element(l1,
l2):
dist
=
{}
for
i
in
l1:
dist[i]
=
1
for
i
in
l2:
if
dist.get(i)
None:
return
i
return
None
以下是检验
l1
=
[1,
2,
'34',
34,
5]
l2
=
[4,
7,
8]
find_same_element(l1,
l2)
应当输出None
l1
=
[1,
2,
'34',
34,
5]
l2
=
[4,
7,
8,5]
find_same_element(l1,
l2)
应当输出5
这个函数只能找到一个共同元素,如果两个list有多个相同元素则只能输出中间的一个。
这个问题常见于面试题,属于最简单的面试题目。需要给面试官说明的是,
第一,哈希表可以快速检索元素,
第二,python有独特的数据类型,
第三,多个共同元素的情况需要面试官告知如何处理,
第四,注意没有共同元素的时候的输出(程序中为None但面试官希望你能提出这个问题)
Duplicated函数功能:查找并显示数据表中的重复值
这里需要注意的是:
drop_duplicates函数功能是:删除数据表中的重复值,判断标准和逻辑与duplicated函数一样
前两天处理数据的时候,需要得到两个数据的交集数据,所以要去除数据中非重复部分,只保留数据中的重复部分。
网上看了一下大家的教程,大部分都是教去除重复行,很少有说到仅保留重复行的。所以在这里用drop_duplicates这个去重函数来实现这个功能。
drop_duplicates函数介绍 :
data.drop_duplicates(subset=[‘A’,‘B’],keep=‘first’,inplace=True)
#subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。
默认值为subset=None表示考虑所有列。
keep='first’表示保留第一次出现的重复行,是默认值。
keep另外两个取值为"last"和False,分别表示保留最后一次出现的重复行和去除所有重复行。
inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。
要用函数取得数据集data中的重复列,分三个步骤 :
(提前导入pandas模块)
data0_1 = data.drop_duplicates() #保留第一个重复行
data0_2 = data.drop_duplicates(keep=False) #去除所有重复行
data0_3=pd.concat([data0_1,data0_2]).drop_duplicates(keep=False)
#合并起来再去重,只剩下真的重复行。
举例:data中wangwu行和tony行重复,需要把它们两行取出。
第一步:#保留第一个重复行
第二步:#去除所有重复行
第三步:#合并起来再去重
通过以上步骤实现取出数据中的重复行。