在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。python
时间: 2023-07-15 15:15:56 浏览: 49
可以使用列表的 `index` 方法来查找给定值在列表中第一次出现的位置,代码如下:
```python
seq = [3, 4, 1, 5, 2]
value = 5
index = seq.index(value)
print(index + 1) # 输出 4
```
如果要查找的值不在序列中,将会抛出 `ValueError` 异常,我们可以使用 `in` 运算符来避免这种情况:
```python
seq = [3, 4, 1, 5, 2]
value = 6
if value in seq:
index = seq.index(value)
print(index + 1)
else:
print("not found")
```
这段代码会输出 `not found`。
相关问题
在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 输入格式 第一行包含一个正整数n,表示序列中元素个数。1\leq n\leq 100001≤n≤10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。 输出格式 若序列中存在x,输出x第一次出现的下标;否则输出-1。python
可以使用线性搜索来解决这个问题,即从序列的第一个元素开始,依次比较每个元素是否等于给定的值,直到找到第一个相等的元素,然后返回它的下标。如果序列中不存在给定的值,则返回-1。
以下是Python代码实现:
```python
n = int(input()) # 输入序列的长度
nums = list(map(int, input().split())) # 输入序列
x = int(input()) # 输入需要查找的值
# 线性搜索
index = -1 # 初始下标为-1
for i in range(n):
if nums[i] == x:
index = i + 1 # 找到第一个相等的元素,更新下标
break
print(index) # 输出结果
```
需要注意的是,题目中序列的下标是从1开始的,因此在输出结果时需要将下标加1。
用递归的方法,给定一个有序序列,使用二分查找指定的值。
二分查找是一种高效的查找算法,它可以在有序序列中查找指定值。下面是使用递归方式实现的二分查找算法:
```python
def binary_search_recursive(arr, low, high, target):
"""
:param arr: 有序序列
:param low: 序列起始下标
:param high: 序列终止下标
:param target: 要查找的目标值
:return: 目标值在序列中的下标,如果不存在则返回-1
"""
if low > high:
return -1
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
return binary_search_recursive(arr, low, mid - 1, target)
else:
return binary_search_recursive(arr, mid + 1, high, target)
```
在这个算法中,我们首先判断序列的起始下标是否大于终止下标,如果是,则说明找不到目标值,返回-1。否则,我们计算中间下标mid,如果arr[mid]等于目标值,则直接返回mid;否则,我们判断arr[mid]和目标值的大小关系,如果arr[mid]大于目标值,则在左半部分继续查找;否则,在右半部分继续查找。
我们可以将这个算法应用到一个有序列表中,例如:
```python
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search_recursive(arr, 0, len(arr) - 1, target)
print(result)
```
输出:
```
2
```
这表明目标值5在有序列表arr中的下标为2。