在Python里,**for**
循环语句简直是我的老朋友了。说真的,离开它,好多事情都没法干。你想啊,数据处理、网页抓取、游戏开发,哪个环节能少了循环?所以,咱们今天就好好聊聊,Python中的for语句怎么写才能真正玩转它。
最基础的,**for**
循环的语法是这样的:
python
for 变量 in 可迭代对象:
循环体
这个“可迭代对象”就很关键了,它决定了循环的次数和每次循环时“变量”的值。Python里的可迭代对象太多了!比如列表(list
)、元组(tuple
)、字符串(string
)、字典(dict
)、集合(set
),甚至还有文件对象。
先拿列表来说吧,这是最常用的:
python
my_list = [1, 2, 3, 4, 5]
for number in my_list:
print(number * 2)
这段代码会依次打印出2、4、6、8、10。挺简单,对吧? number
这个变量,在每次循环里,都会被赋值为 my_list
里的一个元素。
如果你需要同时访问列表的索引和值,可以用 enumerate()
函数:
python
my_list = ["apple", "banana", "cherry"]
for index, fruit in enumerate(my_list):
print(f"Index: {index}, Fruit: {fruit}")
这样就会打印出:
Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry
enumerate()
真的是个好东西,特别是当你需要在循环里根据索引做一些操作的时候。
再来说说字符串。字符串也是可迭代对象,所以你可以这样循环它:
python
my_string = "Hello"
for character in my_string:
print(character)
这会一个字母一个字母地打印出来。
对于字典,**for**
循环默认遍历的是字典的键(key):
python
my_dict = {"name": "Alice", "age": 30, "city": "New York"}
for key in my_dict:
print(key, my_dict[key])
要同时访问键和值,可以用 .items()
方法:
python
for key, value in my_dict.items():
print(f"Key: {key}, Value: {value}")
这个 .items()
返回的是一个包含键值对的元组的列表,所以你可以用两个变量来接收它们。
还有,range()
函数也是个经常和 **for**
循环一起用的家伙。它可以生成一个整数序列:
python
for i in range(5):
print(i)
这会打印出0、1、2、3、4。range(5)
相当于生成了一个 [0, 1, 2, 3, 4]
的列表,但它实际上并不会在内存里创建这个列表,而是按需生成,所以更节省内存。
range()
函数还可以接受两个或三个参数:
range(start, stop)
:生成从start
到stop
(不包括stop
)的整数序列。range(start, stop, step)
:生成从start
到stop
(不包括stop
),步长为step
的整数序列。
比如:
python
for i in range(2, 10, 2):
print(i)
这会打印出2、4、6、8。
**for**
循环里还有两个很重要的关键字:break
和 continue
。
break
用于提前结束循环。比如:
python
my_list = [1, 2, 3, 4, 5]
for number in my_list:
if number == 3:
break
print(number)
这段代码只会打印出1和2,因为当 number
等于3的时候,break
语句被执行,循环就结束了。
continue
用于跳过当前循环的剩余部分,直接进入下一次循环。比如:
python
my_list = [1, 2, 3, 4, 5]
for number in my_list:
if number == 3:
continue
print(number)
这段代码会打印出1、2、4、5。当 number
等于3的时候,continue
语句被执行,跳过了 print(number)
这一行,直接进入下一次循环。
另外,Python 还支持 **for**...else
结构。else
里的代码只会在循环正常结束(也就是没有被 break
中断)的时候执行:
python
my_list = [1, 2, 3, 4, 5]
for number in my_list:
if number == 6:
print("Found 6!")
break
else:
print("6 is not in the list.")
因为 my_list
里没有6,所以这段代码会打印出 “6 is not in the list.”。
还有一种更简洁的写法,叫做列表推导式(list comprehension)。它可以让你在一行代码里创建一个新的列表:
python
my_list = [1, 2, 3, 4, 5]
new_list = [number * 2 for number in my_list]
print(new_list)
这会打印出 [2, 4, 6, 8, 10]
。 列表推导式不仅更简洁,而且通常也更快,因为 Python 解释器对它做了优化。
你可以给列表推导式加上条件判断:
python
my_list = [1, 2, 3, 4, 5]
new_list = [number * 2 for number in my_list if number % 2 == 0]
print(new_list)
这会打印出 [4, 8]
,因为只有偶数才会被乘以2。
除了列表推导式,还有字典推导式和集合推导式,它们的用法类似。
“`python
字典推导式
my_list = [1, 2, 3, 4, 5]
my_dict = {number: number * 2 for number in my_list}
print(my_dict) # 输出: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}
集合推导式
my_list = [1, 2, 2, 3, 4, 4, 5] # 注意重复的元素
my_set = {number for number in my_list}
print(my_set) # 输出: {1, 2, 3, 4, 5} (集合会自动去重)
“`
你看,**Python中的for语句怎么写**
,其实没那么难。 关键是要理解可迭代对象的概念,掌握 break
、continue
、else
这些关键字,以及灵活运用列表推导式。 多练习,多实践,你也能成为 **for**
循环的高手!
评论(0)