要在列表中限制显示的项目数

2022-07-06 12:57:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在id1和id2有很多用户。我希望能够限制作为用户输入结果显示的用户数量。例如,如果x中有100个。我希望能够输入25,以仅显示25个用户

id1 = ([u.id for u in userlist1])
id2 = ([u.id for u in userlist2])

x = set(id1) - set(id2)

numshow = raw_input('How many do you want to show? ')
print 'Now showing ' + numshow + ' users'

usershow = (api.ShowUser(user_id=usershow) for usershow in x)

for num in usershow[:numshow]:
    next(usershow)

我得到以下错误: TypeError:“generator”对象没有属性“getitem


Tags: 用户inidforinputrawid2setid1结果显示用户数量usershowuserlist1userlist2numshow
1条回答
网友
1楼 ·

您可以在生成器中使用[:numshow]从api中只获得numshow个用户。在

usershow = (api.ShowUser(user_id=usershow) for usershow in x[:numshow])

for user in usershow:
    print(user)

编辑:因为@TigerhawkT3通知x是{},所以你必须把x转换成{}。正确的版本是

^{pr2}$

或者你必须把生成器转换成列表

usershow = (api.ShowUser(user_id=usershow) for usershow in x)

for user in list(usershow)[:numshow]:
    print(user)

您也可以使用range-但是如果用户少于numshow,那么就会出现错误StopIteration。在

^{4}$

编辑:使用islice您不必将任何内容转换为列表。在

import itertools

usershow = (api.ShowUser(user_id=usershow) for usershow in x)

for user in itertools.islice(usershow, numshow):
    print(user)

顺便说一句:如果您将usershowfor一起使用,那么您就不需要next(),我只能在一个例子中使用next()。在