如何实现每次执行代码时从含5个字符串的List中选取新的不同值?
Got it, let's break down how to solve this. You have a list of 5 strings, and you need to grab one each time your code runs—with two key rules: it can't be the same as the last one you picked, and you always get a valid new selection. Let's cover the two most common scenarios you might be dealing with.
Scenario 1: Multiple calls within the same program session
If you're calling the selection logic multiple times while your program is running (like in a loop or repeated function calls), you can use a class to keep track of the last selected string. This way, you don't have to rely on external storage.
Here's a Python example:
import random class StringSelector: def __init__(self, string_list): self.string_list = string_list self.last_selected = None # Tracks the last pick def get_next_string(self): # Edge case: if the list only has one element (not your case, but just in case) if len(self.string_list) == 1: return self.string_list[0] # Pick a random string, but keep trying if it's the same as the last one selected = random.choice(self.string_list) while selected == self.last_selected: selected = random.choice(self.string_list) # Update the last selected value for next time self.last_selected = selected return selected # How to use it my_strings = ["apple", "banana", "cherry", "date", "elderberry"] selector = StringSelector(my_strings) # Each call gives a different string from the previous one print(selector.get_next_string()) print(selector.get_next_string()) print(selector.get_next_string())
How this works:
- The
StringSelectorclass stores your list and the last string you picked in instance variables. - Every time you call
get_next_string(), it randomly selects a string until it finds one that's not the same as the last pick. - It updates
last_selectedso the next call knows what to avoid.
Scenario 2: Separate program executions (remembering across runs)
If you need the selection to be different every time you run the entire program (not just within one session), you'll need to save the last selected string somewhere persistent—like a simple text file.
Here's how to do that in Python:
import random def get_next_string(string_list): last_selected = None # Try to read the last pick from a file try: with open("last_selection.txt", "r") as file: last_selected = file.read().strip() except FileNotFoundError: # File doesn't exist = first run, no previous pick to worry about pass # Select a string that's not the same as the last one selected = random.choice(string_list) while selected == last_selected: selected = random.choice(string_list) # Save the current pick to the file for next time with open("last_selection.txt", "w") as file: file.write(selected) return selected # How to use it my_strings = ["apple", "banana", "cherry", "date", "elderberry"] print(get_next_string(my_strings))
How this works:
- When the program runs, it first checks if there's a
last_selection.txtfile with the previous pick. If not, it assumes it's the first run. - It selects a random string, ensuring it's not the same as the last saved value.
- It writes the current pick to the file, so the next time you run the program, it knows which string to skip.
Notes:
- Make sure the script has permission to read/write the file in its directory.
- If you ever want to reset the "last pick" state, just delete the
last_selection.txtfile.
内容的提问来源于stack exchange,提问作者Soumik Bhattacharya

