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

Python3列表报错:'str'对象无法解释为整数,求解决方案

解决Python列表pop()报错:'str' object cannot be interpreted as an integer

嘿,我来帮你搞定这个问题!先拆解下你代码里的问题出在哪:

你写的lol.pop(lol[lol.index(k)])这里,lol.index(k)已经返回了元素k在列表里的整数索引,但你又用这个索引去取列表里的元素(也就是lol[整数索引]),得到的是一个字符串(比如'1c'),而pop()方法需要传入的是整数类型的索引,把字符串传进去自然就触发报错啦。

给你几个实用的解决方案:

方案1:简化pop的参数

直接用lol.index(k)作为pop()的参数就行,完全不需要多套一层lol[]:

import random
lol = ['1c','2c','3c']
k = lol[random.randrange(len(lol))]
lol.pop(lol.index(k))
print(lol)

方案2:直接保存随机索引(更高效)

既然你已经用random.randrange(len(lol))生成了随机索引,不如直接把这个索引存下来,这样能避免额外调用index()查找的开销,逻辑也更清晰:

import random
lol = ['1c','2c','3c']
# 先存储随机索引
random_idx = random.randrange(len(lol))
# 通过索引拿到目标元素k
k = lol[random_idx]
# 用索引直接删除元素
lol.pop(random_idx)
print(lol)

方案3:用random.choice()+remove()(更简洁)

如果你的列表里没有重复元素,用random.choice()直接随机选取元素,再用remove()删掉它,代码会更易读:

import random
lol = ['1c','2c','3c']
k = random.choice(lol)
lol.remove(k)
print(lol)

这三个方案都能解决你的问题,你可以根据自己的需求挑选~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:40