我有以下列表:
users = [
"user1",
"user2",
"user3"
]
我有这个for循环,循环另一个列表:
for item in ids:
myfunction(item, user) # ???
我不确定如何制作这个循环。我想要的是,对于循环经历的每个项目,它应该执行myfunction(item, user)
,但是用户变量应该是用户列表中的用户,并且对于每个项目,用户不应该是相同的(当它到达用户列表的末尾时,它可能会返回到user1,并重复循环)。
它应该执行这样的事情:
myfunction(item, "user1")
myfunction(item, "user2")
myfunction(item, "user3")
我怎样才能达到这样的目标?
谢谢
答案 0 :(得分:4)
for counter, item in enumerate(ids):
user = users[counter % len(users)]
myfunction(item, user)
答案 1 :(得分:1)
所以你希望每个item
只执行1 user
?如果是这样,你可以这样做
for i, item in enumerate(ids):
myfunction(item, users[i%len(users)])
答案 2 :(得分:0)
itertools
有一个名为product()
的有用函数,您可以使用它来生成任意数量的元素组的笛卡尔积,而不需要嵌套for循环。
import itertools
for (item, user) in itertools.product(ids, users):
myfunction(item, user)
答案 3 :(得分:0)
您希望在<select id="delete" multiple name="employees">
<c:forEach items="${empList}" var="employee">
<c:choose>
<c:when test="${some condition that satisfies your requirement }">
<option value= "${employee.emp_Id}" selected="selected"> ${employee.firstName} </option>
</c:when>
<c:otherwise>
<option value= "${employee.emp_Id}" >${employee.firstName}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
之前循环一次,然后根据需要重复ids
次。
users
答案 4 :(得分:-2)
如果你想永远循环,那么你需要的是:
user_map = {}
while True:
for user in users:
if user_map.has_key(user):
continue
user_map[user] = 1
for item in ids:
myfunction(item, user)