For循环是迭代对象元素的常用方法(在第一个示例中,列表)
具有可迭代方法的任何对象都可以在for循环中使用。
python的一个独特功能是代码块不被{} 或begin,end包围。相反,python使用缩进,块内的行必须通过制表符缩进,或相对于周围的命令缩进4个空格。
虽然这一开始可能看起来不直观,但它鼓励编写更易读的代码,随着时间的推移,你会学会喜欢它
In [1]
#取第一个列表成员(可迭代),暂称它数字(打印它)
#取列表的第二个成员(可迭代),暂时将其称为数字,等等......
for number in [23, 41, 12, 16, 7]:
print(number)
print('Hi')
23 41 12 16 7 Hi
返回一个元组,其中包含每次迭代的计数(从默认为0开始)和迭代序列获得的值:
In [2]
friends = ['steve', 'rachel', 'michael', 'adam', 'monica']
for index, friend in enumerate(friends):
print(index,friend)
0 steve 1 rachel 2 michael 3 adam 4 monica
从文本中删除标点符号并将最终产品转换为列表:
On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way
(加州旅馆)
In [3]
text = '''On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way'''
In [4]
print(text)
On a dark desert highway, cool wind in my hair Warm smell of colitas, rising up through the air Up ahead in the distance, I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway; I heard the mission bell And I was thinking to myself, "This could be Heaven or this could be Hell" Then she lit up a candle and she showed me the way
基本上,任何具有可迭代方法的对象都可以在for循环中使用。即使是字符串,尽管没有可迭代的方法 - 但我们不会在这里继续。具有可迭代方法基本上意味着数据可以以列表形式呈现,其中有序地存在多个值。
In [5]
for char in '-.,;\n"\'':
text = text.replace(char,' ')
print(text)
On a dark desert highway cool wind in my hair Warm smell of colitas rising up through the air Up ahead in the distance I saw a shimmering light My head grew heavy and my sight grew dim I had to stop for the night There she stood in the doorway I heard the mission bell And I was thinking to myself This could be Heaven or this could be Hell Then she lit up a candle and she showed me the way
In [6]
# Split converts string to list.
# Each item in list is split on spaces
text.split(' ')[0:20]
['On', 'a', 'dark', 'desert', 'highway', '', 'cool', 'wind', 'in', 'my', 'hair', 'Warm', 'smell', 'of', 'colitas', '', 'rising', 'up', 'through', 'the']
In [7]
# Dont want to have non words in my list for example ''
# which in this case are things of zero length
len('')
0
In [8]
# Making new list with no empty words in it
cleaned_list = []
In [9]
for word in text.split(' '):
word_length = len(word)
if word_length > 0:
cleaned_list.append(word)
In [10]
cleaned_list[0:20]
['On', 'a', 'dark', 'desert', 'highway', 'cool', 'wind', 'in', 'my', 'hair', 'Warm', 'smell', 'of', 'colitas', 'rising', 'up', 'through', 'the', 'air', 'Up']
continue语句将转到循环的下一次迭代
continue语句用于忽略某些值,但不会中断循环
In [11]
cleaned_list = []
for word in text.split(' '):
if word == '':
continue
cleaned_list.append(word)
cleaned_list[1:20]
['a', 'dark', 'desert', 'highway', 'cool', 'wind', 'in', 'my', 'hair', 'Warm', 'smell', 'of', 'colitas', 'rising', 'up', 'through', 'the', 'air', 'Up']
break语句将完全打断循环
In [12]
cleaned_list = []
In [13]
for word in text.split(' '):
if word == 'desert':
print('I found the word I was looking for')
break
cleaned_list.append(word)
cleaned_list
I found the word I was looking for
['On', 'a', 'dark']
In [14]
# Making empty lists to append even and odd numbers to.
even_numbers = []
odd_numbers = []
for number in range(1,51):
if number % 2 == 0:
even_numbers.append(number)
else:
odd_numbers.append(number)
In [15]
print("Even Numbers: ", even_numbers)
Even Numbers: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
In [16]
print("Odd Numbers: ", odd_numbers)
Odd Numbers: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
python 2 xrange and python 3 range are same (resembles a generator) python 2 range生成一个list
注意: 较长的列表会很慢