我在python中写了一个脚本来告诉新的前10个数字中的新数字。我知道它看起来比它更复杂,这与我稍后尝试用脚本做的事情有关。就目前而言,虽然我试图找出它为什么要打印每个'对于列表中的每个数字' new'而不仅仅是十分之前的那些。
这是我的代码:
i = 10
new = ['A lot of numbers']
for each in re.findall(r'[0-9]+', new):
if any(each for x in (re.findall(r'[0-9]+', new)[0:i])):
print each
else:
pass
答案 0 :(得分:0)
如果您正在寻找new
中的前10个字母,那么您的意思是
if any(each for x in (re.findall(r'[0-9]+', new[0:i]))):
而不是:
if any(each for x in (re.findall(r'[0-9]+', new)[0:i])):
另外,你的意思是new
成为一个列表吗?列表无法传递给findall
。
最后,请注意,您永远不需要else: pass
语句,if
可以自行运行。
答案 1 :(得分:0)
你需要在你的生成器表达式中以某种方式引用x,否则你只是检查any([each, each, each, ....])
,如果每个计算结果为true(它将始终用于正则表达式),它将始终求值为true。我怀疑你想要这样的东西,它测试第一个i项中的任何一个是否等于每个:
if any(x==each for x in (re.findall(r'[0-9]+', new)[0:i])):
答案 2 :(得分:0)
如果new是一个字符串列表,其中一些是“123”之类的数字,你想要这些数字中的前10个:
allnumbers = [x for x in new if re.match("[0-9]+", x)]
first10numbers = allnumbers[:10]
(对于Python 2.x)
如果new是一个字符串,那么你有
allnumbers = [x for x in re.findall("[0-9]+", x)]
我不确定你以后会对此做些什么,但是如果你只是试图打印后面的数字,只有当它们出现在前10个数字中时,你可能就会这样:
for number in [x for x in allnumbers if x in first10numbers]:
print number