python检索字符串/列表/元组中元素的位置 find()/index()

查找元素位置,对于字符串,
str.find(str, beg=0, end=len(string))
str.index(str, beg=0, end=len(string))

s = 'hello, world!'

s.find('l')
#2
s.index('l')
#2
s.find('l', len(s) - 5)
#10

s.find('world')
s.index('world')
#7

s.find('Hello')
#-1
s.index('Hello')
#ValueError: substring not found
s.index('Hello') if 'Hello' in s else -1
#-1

对于列表(元组同理):
list.index(obj)

lst = [1,2,'ad','c']

lst.index(1)
#0
lst.index('c')
#3
lst.index('hehe')
#ValueError: 'hehe' is not in list
lst.index('hehe') if 'hehe' in lst else -1
#-1

'''
同str,也可切片
'''
lst = ['b','b','b',1, 2,'b']
lst.index('b')
#0
lst.index('b', 2, 4)
#2
lst.index('b',-1) #注意这里和字符串中的使用区别,begin可以不为0
#5
lst.index('b',-2)
#5
lst.index('b',-3)
#5
lst.index('b',-4)
#2
lst.index('b',-5)
#1

元组举例:

from itertools import permutations
sequence = [_ for _ in permutations([1,2,3,4,5])] 
#len = 120
len([_ for _ in sequence if _.index(1) == 0])
#24

总结:

1、find()和index()两者区别在于,遇到没有的元素时:
find会返回-1
index会报错

2、index()在str中,begin=0, end=len(string)
而index()在list中,begin可以为负

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python字符串是一个由字符组成的序列,用单引号或者双引号括起来即可。字符串是不可变的,也就是说一旦创建就无法更改。可以使用索引和切片来访问字符串的特定字符或子串,并且也提供了一些内置方法来操作字符串,如拼接、查找、替换等。 列表是一个有序的集合,可以包含不同类型的元素列表是可变的,可以通过索引来访问和修改其元素。可以使用一些内置方法对列表进行增、删、改、查等操作。列表还支持切片操作,可以实现对列表的部分元素进行截取和复制。 字典是无序的键值对集合,每个元素由一个键和一个值组成,键和值之间用冒号分隔,键和值可以是任意类型的数据。字典是可变的,并且具有高效的查找和插入操作。可以通过键来访问和修改字典的对应值,也可以使用一些内置方法对字典进行增、删、改、查等操作。 元组是一种不可变的有序集合,可以包含不同类型的元素。与列表相比,元组更加轻量级和高效,因为元组元素不能修改,所以在不需要修改元素的情况下,建议使用元组代替列表。可以使用索引来访问元组元素,也可以使用内置方法对元组进行查找。 总之,字符串列表、字典和元组Python常用的数据类型,分别用于表示文本、有序集合、键值对和不可变有序集合。在实际的编程,根据具体的需求选择适合的数据类型,可以更加高效地处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值