You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成5个数字的列表并生成反转列表:两种方案可行性分析

Alright, let's tackle your task: generating a list of 5 random numbers and creating a reversed version of it. Let's go through your two solutions, fix their issues, and explain what's going wrong.

Solution 1: Almost There, But with a Critical Quirk

Your first solution uses random.sample which is great for getting unique random numbers (since it picks 5 distinct values from 1-99). But there's a mistake in how you're reversing the list:

import random

# Original Solution 1 (with bug)
list = random.sample(range(1, 100), 5)
otherlist = list.reverse  # This doesn't do what you think!

The list.reverse() method modifies the original list in place and returns None. Assigning list.reverse (without parentheses) just stores the method object itself in otherlist, not the reversed list.

Fixed Solution 1

To create a new reversed list without altering the original, use slicing (this is the most Pythonic way):

import random

# Fixed Solution 1
original_list = random.sample(range(1, 100), 5)
reversed_list = original_list[::-1]

print("Original list:", original_list)
print("Reversed list:", reversed_list)

If you do want to reverse the original list and then copy it, you can do this (though slicing is cleaner):

original_list = random.sample(range(1, 100), 5)
original_list.reverse()  # Reverses the list in place
reversed_list = original_list.copy()

Solution 2: Multiple Issues to Fix

Your second solution has several problems: undefined variables, index errors, and messy counter logic. Let's break down the issues first:

  • templist is never initialized (you need to set templist = [] before appending to it)
  • The counter manipulation is confusing (after the first loop, you subtract 1 from counter, but the logic for building the reversed list is flawed)
  • You're trying to print templist[count2] before templist has elements, which will throw an IndexError

Fixed Solution 2

If you want to stick with the loop approach (instead of using built-in methods), here's a cleaned-up version:

import random

# Fixed Solution 2
original_list = []
counter = 0

# Generate the original list of 5 numbers
while counter < 5:
    original_list.append(random.randint(5, 10))
    counter += 1

# Create reversed list using a loop
reversed_list = []
counter = len(original_list) - 1  # Start at the last index

while counter >= 0:
    reversed_list.append(original_list[counter])
    counter -= 1

print("Original list:", original_list)
print("Reversed list:", reversed_list)

This version initializes all variables properly, uses clear counter logic, and avoids index errors.

Key Takeaways

  • For simple reversals, slicing [::-1] is the best Pythonic approach—it's concise and doesn't modify the original list.
  • If you use loops, make sure all variables are initialized, and double-check your counter logic to avoid off-by-one errors.
  • Avoid using list as a variable name—it's a built-in Python type, and redefining it can cause unexpected bugs later!

内容的提问来源于stack exchange,提问作者user3042850

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:55:29