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):生成从 startstop(不包括 stop)的整数序列。
  • range(start, stop, step):生成从 startstop(不包括 stop),步长为 step 的整数序列。

比如:

python
for i in range(2, 10, 2):
print(i)

这会打印出2、4、6、8。

**for** 循环里还有两个很重要的关键字:breakcontinue

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语句怎么写**,其实没那么难。 关键是要理解可迭代对象的概念,掌握 breakcontinueelse 这些关键字,以及灵活运用列表推导式。 多练习,多实践,你也能成为 **for** 循环的高手!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。