限制要在Python中显示的列表项的数量
我在id1和id2中有很多用户。我希望能够限制由于用户输入而显示的用户数量。例如,如果x中有100。我想能够输入25,只显示25个用户限制要在Python中显示的列表项的数量,python,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 + '
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”您可以在generator内部使用
[:numshow]
从api中仅获取numshow
用户
usershow = (api.ShowUser(user_id=usershow) for usershow in x[:numshow])
for user in usershow:
print(user)
编辑:因为@TigerhawkT3通知x
是set
,所以您必须将x
转换为列表
。正确的版本是
usershow = (api.ShowUser(user_id=usershow) for usershow in list(x)[:numshow])
for user in usershow:
print(user)
或者您必须将生成器转换为列表
usershow = (api.ShowUser(user_id=usershow) for usershow in x)
for user in list(usershow)[:numshow]:
print(user)
您也可以使用范围-但如果用户少于numshow
,则会出现错误StopIteration
usershow = (api.ShowUser(user_id=usershow) for usershow in x)
for num in range(numshow):
user = next(usershow)
print(user)
编辑:使用
islice
无需将任何内容转换为列表
import itertools
usershow = (api.ShowUser(user_id=usershow) for usershow in x)
for user in itertools.islice(usershow, numshow):
print(user)
顺便说一句:如果你将
usershow
与一起用于,那么你就不需要next()
,我只能在一个例子中使用next()
。使用[]
-usershow=[…]
或者在生成器内部使用[:numshow]
(api.ShowUser(user\u id=usershow)对于x[:numshow])
@TigerhawkT3中的usershow,您是对的,我没有注意到set()