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

如何随机替换列表中的整数为指定字符串且同索引元素不同?

解决方案

步骤1:构建映射关系

先把单词-数值列表转换成数值到单词的字典,同时整理出所有单词的列表,方便后续快速查找和随机选择:

import random

# 原始单词-数值关联列表
words = [["Happy", 1], ["Sad", 2], ["Anger", 3]]
# 构建数值到单词的映射字典
num_to_word = {num: word for word, num in words}
# 整理所有单词的列表,用于随机备选
all_words = [word for word, num in words]

步骤2:遍历处理两个列表

逐个遍历两个列表的对应位置元素,先把整数替换为对应单词,再检查同位置元素是否重复,重复则随机替换其中一个为其他单词:

List1 = ["Happy", 2, 3, 1, 1, "Sad", "Sad", "Anger"]
List2 = [1, "Sad", "Anger", "Happy", "Happy", 2, 2, 3]

result_list1 = []
result_list2 = []

for item1, item2 in zip(List1, List2):
    # 处理List1的当前元素:整数转对应单词,字符串直接保留
    processed1 = num_to_word[item1] if isinstance(item1, int) else item1
    # 处理List2的当前元素:逻辑同上
    processed2 = num_to_word[item2] if isinstance(item2, int) else item2

    if processed1 != processed2:
        # 同位置元素不同,直接加入结果
        result_list1.append(processed1)
        result_list2.append(processed2)
    else:
        # 同位置元素重复,随机选一个不等于当前值的单词替换其中一个(这里替换List1的元素)
        available = [w for w in all_words if w != processed1]
        processed1 = random.choice(available)
        result_list1.append(processed1)
        result_list2.append(processed2)

# 输出结果
print("处理后的List1:", result_list1)
print("处理后的List2:", result_list2)

关键说明

  • 用isinstance(item, int)准确判断整数元素,完成基础替换
  • 当同位置元素重复时,从所有单词中筛选出不等于当前值的备选列表,用random.choice()随机选一个替换,避免重复
  • 全程保留原列表的元素顺序,没有使用shuffle方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 00:53:11