新手python简单程序报错求解

defthreshold(a,c):b=[]forxina:b.extend(a[x]>=c)printb输入一个数字列表将里面比c大的重新输出。报错是TypeError... def threshold(a,c):
b = []
for x in a:
b.extend(a[x] > = c)
print b

输入一个数字列表将里面比c大的重新输出。报错是TypeError: 'bool' object is not iterable
为什么?怎么改?求高手指导一下。谢谢
展开
 我来答
daweileo
2013-09-22 · TA获得超过275个赞
知道小有建树答主
回答量:121
采纳率:100%
帮助的人:159万
展开全部
a[x] >= c 是一个表达式,返回的是这个表达式的结果,即一个 bool 类型的对象

[].extend 方法接受的参数是可迭代的(iterable)对象,
例如:
a = [1,2,3]
b = [4,5,6]
a.extend(b) # a=[1, 2, 3, 4, 5, 6]
楼主此处应该用 append 方法

使用列表解析是最pythonic的解法,也是效率最高的
b = [x for x in a if x >= c]
frostfish425
2013-09-22 · TA获得超过124个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:122万
展开全部
def threshold(a,c)
b = [num for num in a if num >= c]
print b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何必在乎永远呢
2013-09-22
知道答主
回答量:1
采纳率:0%
帮助的人:1453
展开全部
a[x]>=c 返回的是TRUE OR FALSE吧?
for x in a
if x<c

x=c

b.extend(x)
追问
我知道了。我找你的修改了一下。还有错误
def threshold(a,c):
b = []
for x in a:
if a[x] >= c:
t = a[x]
b.extend(t)
print b

劳驾再看看 if a[x] >= c:这行
IndexError: list index out of range
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友03bbd54
2013-09-22 · TA获得超过369个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:135万
展开全部
for x in a: 语句中x是a中的元素,而不是下标(索引),应该直接使用x和c比较;
a[x] > = c 的结果是bool值,按题意不应该添加到b。
程序建议改为:
def threshold(a,c):
b = []
for x in a:
if x>=c:
b.extend(x)
print b
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式