写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
时间: 2024-10-08 16:24:48 浏览: 50
如果你想创建一个自定义的函数来统计列表中指定元素的所有下标,并在元素不存在时返回-1,可以参考以下Python代码示例:
```python
def custom_index(lst, target):
indices = [] # 创建一个空列表来存储下标
for i in range(len(lst)):
if lst[i] == target:
indices.append(i) # 如果找到目标元素,将其索引添加到列表中
if not indices: # 检查列表是否为空
return -1 # 如果为空,说明目标元素不在列表中,返回-1
else:
return indices # 否则,返回所有匹配元素的下标
# 使用示例
my_list = [1, 2, 3, 4, 5, 2]
print(custom_index(my_list, 2)) # 输出:[1, 5],因为数字2在索引1和5处都存在
print(custom_index(my_list, 6)) # 输出:-1,因为列表中没有数字6
```
相关问题
在js利用indexof()函数统计数,并输出下标
在JavaScript中,`indexOf()`函数可以用于查找某个指定值在数组中首次出现的位置。如果找到这个值,它会返回该值的索引;如果没有找到,则返回-1。如果你想统计某个元素在数组中出现的所有下标,你可以循环遍历数组并记录每个匹配到的下标。下面是一个简单的示例:
```javascript
function getIndexes(array, target) {
var indexes = [];
for (var i = 0; i < array.length; i++) {
if (array[i] === target && !indexes.includes(i)) {
indexes.push(i);
}
}
return indexes;
}
// 使用示例
var myArray = [1, 2, 3, 4, 5, 2, 6];
var targetIndex = 2; // 这里替换为你想要查找的目标值
var targetIndexes = getIndexes(myArray, targetIndex);
console.log("目标元素 " + targetIndex + " 出现的下标有:", targetIndexes);
1、在main函数中,编写C++代码,实现以下要求: (1)通过new运算符动态创建一个长度为10的实型一维数组,返回的数组地址存储在指针变量p中,键盘输入任意10个数据存储在数组中; (2)写代码求出这10个数据的平均值,并分别统计输出数组中数据大于、等于和小于平均值的个数,并输出结果; (3)查找数组中的最大数据,并将其放在数组最前面,即0号单元; (4)使用指针变量p输出数组中的各元素。 (5)查找数组中的最小数据和位置,并输出结果; (6)键盘输入任意一个整数,查找该数据在数组中的下标并输出,如果找不到则输出“not find”。 (7)将数组转置,即 0号与9号交换,1号与8号交换...... (8)使用指针变量p输出数组中的各元素。
以下是实现要求的C++代码:
```cpp
#include <iostream>
using namespace std;
int main() {
float *p = new float[10]; // 动态创建长度为10的实型一维数组
float sum = 0; // 存储数组元素之和
float avg; // 存储平均值
int above = 0, equal = 0, below = 0; // 分别存储大于、等于和小于平均值的个数
int maxIndex = 0, minIndex = 0; // 存储最大和最小元素的下标
float temp; // 用于交换元素的临时变量
// 键盘输入数组元素
for (int i = 0; i < 10; i++) {
cout << "请输入第" << i+1 << "个数:";
cin >> p[i];
sum += p[i];
}
// 计算平均值和大于、等于、小于平均值的个数
avg = sum / 10.0;
for (int i = 0; i < 10; i++) {
if (p[i] > avg) above++;
else if (p[i] == avg) equal++;
else below++;
}
cout << "平均值为:" << avg << endl;
cout << "大于平均值的个数为:" << above << endl;
cout << "等于平均值的个数为:" << equal << endl;
cout << "小于平均值的个数为:" << below << endl;
// 查找最大元素并放在数组最前面
for (int i = 1; i < 10; i++) {
if (p[i] > p[maxIndex]) maxIndex = i;
}
temp = p[0];
p[0] = p[maxIndex];
p[maxIndex] = temp;
// 输出数组中的各元素
cout << "数组中的各元素为:";
for (int i = 0; i < 10; i++) {
cout << p[i] << " ";
}
cout << endl;
// 查找最小元素和位置
for (int i = 1; i < 10; i++) {
if (p[i] < p[minIndex]) minIndex = i;
}
cout << "最小元素为:" << p[minIndex] << ",位置为:" << minIndex << endl;
// 查找指定元素并输出下标
int num;
cout << "请输入要查找的整数:";
cin >> num;
int index = -1; // 存储查找到的下标
for (int i = 0; i < 10; i++) {
if (p[i] == num) {
index = i;
break;
}
}
if (index == -1) cout << "not find" << endl;
else cout << "该数在数组中的下标为:" << index << endl;
// 数组转置
for (int i = 0; i < 5; i++) {
temp = p[i];
p[i] = p[9-i];
p[9-i] = temp;
}
// 再次输出数组中的各元素
cout << "转置后数组中的各元素为:";
for (int i = 0; i < 10; i++) {
cout << p[i] << " ";
}
cout << endl;
delete [] p; // 释放内存
return 0;
}
```
以上代码中,我们使用new运算符动态创建了一个长度为10的实型一维数组,并将数组地址存储在指针变量p中。接着,我们通过键盘输入任意10个数据存储在数组中,并计算出了这10个数据的平均值,并分别统计输出了数组中数据大于、等于和小于平均值的个数。
然后,我们查找了数组中的最大数据,并将其放在数组最前面,即0号单元。接着,我们使用指针变量p输出了数组中的各元素,并查找了数组中的最小数据和位置,并输出了结果。
接下来,我们通过键盘输入任意一个整数,查找该数据在数组中的下标并输出,如果找不到则输出“not find”。最后,我们将数组转置,即0号与9号交换,1号与8号交换......,并再次使用指针变量p输出了数组中的各元素。
最后,记得释放内存,即使用delete运算符释放new运算符分配的内存空间。
阅读全文