Python - 将数据注入for循环

时间:2015-08-31 04:41:57

标签: python loops for-loop

我有以下列表:

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")

我怎样才能达到这样的目标?

谢谢

5 个答案:

答案 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)