[Go练习题]试保存1 3 5 7 9 五个奇数到数组,并倒序打印

一,思路:

1.从终端输入13579,并保存到数组中。

2.用临时变量在循环中递减的方式倒序数组的元素

3.将倒序后的数组赋值给原数组

二,代码:

package main

import "fmt"

/*
试保存1 3 5 7 9 五个奇数到数组,并倒序打印
*/

func main() {
	var arr = [5]int{}

	for i := 0; i < len(arr); i++ {
		fmt.Printf("请输入第%d个奇数:", i+1)
		fmt.Scanln(&arr[i])
	}
	fmt.Println(arr)
	
	tempIndex := len(arr)
	tempArr := [5]int{}
	for i := 0; i < len(arr); i++ {
		tempIndex--
		tempArr[tempIndex] = arr[i]
	}
	arr = tempArr
	fmt.Println(arr)
}

三,效果:

<think>我们有两个任务:1. 对列表进行倒序操作;2. 提取倒序后列表中索引为0,2,4的元素(即第1个、第3个和第5个元素,因为索引从0开始)。 根据引用[4],我们可以使用reverse()方法将列表原地倒序,也可以使用切片[::-1]来创建一个新的倒序列表(原列表不变)。然后,我们可以通过切片或列表推导来提取特定索引位置的元素。 步骤: 1. 倒序列表:有两种方法 a. 使用list.reverse()方法(原地修改,原列表会变) b. 使用切片list[::-1](创建新列表,原列表不变) 2. 提取索引0,2,4的元素:可以通过切片[0:5:2](从0开始到5(不包括5),步长为2)或者直接使用列表推导[i for i in [0,2,4]]。 注意:如果使用原地倒序,那么原列表会被改变。如果不想改变原列表,则使用切片创建新列表。 根据需求,我们可能需要两种方案: 方案A(原地倒序): my_list.reverse() 然后提取元素:my_list[0:5:2] 或者 [my_list[i] for i in [0,2,4]] 方案B(创建新列表): reversed_list = my_list[::-1] 然后提取:reversed_list[0:5:2] 或者 [reversed_list[i] for i in [0,2,4]] 由于提取的元素索引是0,2,4,我们可以使用切片[start:stop:step]来实现,其中start=0, stop=5(因为5是第6个元素,我们只需要到第5个元素索引4),step=2。 示例代码: 假设有一个列表:lst = [0,1,2,3,4,5,6,7,8,9] 倒序后:[9,8,7,6,5,4,3,2,1,0] 提取索引0,2,4:即9,7,5 使用切片:lst_reversed = lst[::-1] 得到[9,8,7,6,5,4,3,2,1,0] 然后切片:lst_reversed[0:5:2] -> 从索引0到索引4(因为stop=5不包括5),步长为2,即索引0,2,4 -> [9,7,5] 注意:如果列表长度不足,切片会自动截断到列表末尾。 因此,我们可以写一个函数来完成这个操作:</think># Python列表倒序与元素提取 在Python中对列表进行倒序操作提取特定索引元素(如0,2,4)是常见的数据处理任务。根据您的需求,以下是完整解决方案: ## 倒序与元素提取方法 ### 方法1: 使用切片操作(推荐) ```python # 原始列表 my_list = [10, 20, 30, 40, 50, 60, 70] # 倒序提取索引0,2,4位置的元素 result = my_list[::-1][0:5:2] # 倒序后取索引0,2,4 print(result) # 输出: [70, 50, 30] ``` ### 方法2: 使用reverse()方法(原地修改) ```python my_list = [10, 20, 30, 40, 50, 60, 70] # 原地倒序列表 my_list.reverse() # 列表变为[70, 60, 50, 40, 30, 20, 10] # 提取特定索引元素 result = [my_list[i] for i in [0, 2, 4]] print(result) # 输出: [70, 50, 30] ``` ### 方法3: 使用sorted()函数(创建新列表) ```python my_list = [10, 20, 30, 40, 50, 60, 70] # 创建倒序新列表 reversed_list = sorted(my_list, reverse=True) # [70, 60, 50, 40, 30, 20, 10] # 提取元素 result = [reversed_list[0], reversed_list[2], reversed_list[4]] print(result) # 输出: [70, 50, 30] ``` ## 关键函数说明 1. **切片操作 `[::-1]`** - 创建列表的倒序副本 - 不修改原始列表 - 语法: `list[start:stop:step]` - 示例: `[1,2,3,4][::-1] → [4,3,2,1]` 2. **reverse() 方法** - 原地倒序列表(修改原始列表)[^4] - 无返回值 - 示例: `lst = [1,2,3]; lst.reverse() → lst变为[3,2,1]` 3. **sorted() 函数** - 创建排序后的新列表 - `reverse=True` 参数实现倒序[^1][^3] - 不修改原始列表 - 示例: `sorted([1,3,2], reverse=True) → [3,2,1]` ## 实际应用示例 ### 数据处理场景 ```python # 学生成绩处理 scores = [88, 92, 75, 85, 90, 78, 95] # 倒序排列提取前3名学生的奇数位置成绩 top_scores = sorted(scores, reverse=True)[:6:2] print(f"最高分奇数位置: {top_scores}") # 输出: [95, 90, 85] ``` ### 大型数据集处理 ```python # 高效处理大型列表 big_data = list(range(1000000)) # 使用islice避免创建完整副本 from itertools import islice result = list(islice(reversed(big_data), 0, 5, 2)) print(f"最后五个元素的奇数位: {result}") # 输出: [999999, 999997, 999995] ``` ## 注意事项 1. **性能考虑**: - 对于大列表,切片`[::-1]`会创建完整副本,可能消耗内存 - `reversed()`函数返回迭代器,更节省内存: ```python # 使用迭代器避免创建副本 result = [x for i, x in enumerate(reversed(my_list)) if i in {0, 2, 4}] ``` 2. **索引边界处理**: - 当索引超出范围时自动处理: ```python short_list = [10, 20] result = short_list[::-1][0:5:2] # 安全返回[20] ``` 3. **自定义提取逻辑**: ```python # 提取任意索引位置的函数 def extract_positions(lst, indices, reverse=False): data = reversed(lst) if reverse else lst return [x for i, x in enumerate(data) if i in indices] print(extract_positions([1,2,3,4], {0,2}, reverse=True)) # 输出: [4, 2] ``` 这些方法都遵循Python的索引规则,索引从0开始,负数索引表示从末尾计数[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值