Python 如何使用列表理解打印特定值的模?

Python 如何使用列表理解打印特定值的模?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一张单子 a = ['python', 'django', 'python with django'] 我想做的是 如果数字可被3整除,则打印“python” 如果数字可被5整除,则打印“django” 如果数字可被3和5整除,则打印“python with django” 这是我的密码 for n, i in enumerate(range(20)): if i % 3 == 0: print n, a[0] elif i % 5 == 0:

我有一张单子

a = ['python', 'django', 'python with django']
我想做的是

如果数字可被3整除,则打印“python”

如果数字可被5整除,则打印“django”

如果数字可被3和5整除,则打印“python with django”

这是我的密码

for n, i in enumerate(range(20)):
    if i % 3 == 0:
        print n, a[0]
    elif i % 5 == 0:
        print n, a[1]
    elif i % 3 == 0 and i % 5 == 0:
        print n, a[2]
O/p为

0 python
3 python
5 django
6 python
9 python
10 django
12 python
15 python
18 python
我需要这个结果

0 python with django
3 python
5 django
6 python
9 python
10 django
12 python
15 python with django
18 python
我可以使用列表理解吗或者有什么类似python的方法吗


提前感谢。

在这种情况下,列表理解可能会变得过于复杂。只需将三个条件中的最后一个移至顶部即可。否则,如果一个数字可以被3和5整除,那么仅被3整除的检查将首先成功,并且您的
elif
链意味着将永远无法进行组合检查。顺便说一下,您不需要枚举迭代的范围,只需使用
i
代替
n

要使代码不那么冗长(但也不那么直截了当),您可以少检查一次:

for i in range(20):
    if i % 3 == 0:
        if i % 5 == 0:
            print i, a[2]
        else:
            print i, a[0]
    elif i % 5 == 0 :
        print i, a[1]

您的方式看起来不错,但您的代码有点不正确。以下是正确的代码:

for n, i in enumerate(range(20)):
    if i % 3 == 0 and i % 5 == 0:
        print n, a[2]
    elif i % 3 == 0:
        print n, a[0]
    elif i % 5 == 0:
        print n, a[1]

你必须先让它检查这个数字是否可以被3和5整除。如果没有,则它可以被满足第一个
If
语句条件的3整除,因此它不会检查任何
elif
语句,因为
elif
只有在前面的
If
elif
语句未满足时才会被检查。如果这个数字可以被5整除,情况也是如此。

这应该可以解决你的嘶嘶声任务

a = ['python with django' if x%15 == 0 else ('python' if x%3 == 0 else 'django') for x in xrange(20)]

我有条件,但是否有办法检查这些更容易的结果,你需要做出至少两个决定,以区分3种情况。我将编辑答案,因为无法在评论中设置多行代码的格式。在回答问题后,请不要更改您的问题,因为这可能会让未来的读者感到困惑,并且会使答案看起来怪异或错误。如有必要,在问题末尾添加新信息,保留原始信息不变。