Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

python - How can I combine range() functions

For some code I'm writing, I need to iterate from 1-30 skipping 6. What I tried naively is

a = range(1,6)
b = range(7,31)

for i in a+b:
    print i

Is there a way to do it more efficiently?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Use itertools.chain:

import itertools

a = range(1,6)
b = range(7,31)

for i in itertools.chain(a, b):
    print i

Or tricky flattening generator expressions:

a = range(1,6)
b = range(7,31)
for i in (x for y in (a, b) for x in y):
    print i

Or skipping in a generator expression:

skips = set((6,))
for i in (x for x in range(1, 31) if x not in skips):
    print i

Any of these will work for any iterable(s), not just ranges in Python 3 or listss in Python 2.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...