新手python简单程序报错求解

def threshold(a,c):
b = []
for x in a:
b.extend(a[x] > = c)
print b

输入一个数字列表将里面比c大的重新输出。报错是TypeError: 'bool' object is not iterable
为什么?怎么改?求高手指导一下。谢谢

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]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
def threshold(a,c)
b = [num for num in a if num >= c]
print b
第2个回答  2013-09-22
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

第3个回答  2013-09-22
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本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网