干翻所有ddl 发表于 2024-11-22 10:31:05

for each对each的理解问题

如图勾画的for color in colors和for size in sizes里面的color和size都代替了each的位子,所以请问在for each in ...的语句中,
each是可以随意用其他名称代替的吗

isdkz 发表于 2024-11-22 10:41:40

随你喜好,最好取个有意义的名字,不然代码会变得难以阅读

FishC 发表于 2024-11-22 10:43:24

是的,在 `for each in ...` 的语句中,`each` 只是一个占位符,用于表示集合中的每一个元素。你可以根据代码的语义随意用其他名称来代替它,比如 `color` 或 `size`。更改这个名称通常是为了让代码更加具有可读性。

colors = ['red', 'green', 'blue']

for color in colors:
    print(color)

在这个例子中,`color` 代替了 `each` 的位置,用来表示 `colors` 列表中的每一个元素。选择一个合适的名称有助于提高代码的可读性和易懂性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

Filthy-ice 发表于 2024-11-22 14:28:08

本帖最后由 Filthy-ice 于 2024-11-22 14:34 编辑

for each in collections 其实就是for(i= n;i condition; i options){collections...}变体, 众所周知, 这样拿到的都是指针, 指向集合中某个元素的地址, 存储指针需要载体以便以后访问, each其实就是一个存储指针的栈变量.
假如:
my_list =
print(my_list)-> 1

在C中的解释:
int* val = &my_list;取原元素(堆区)的地址赋给一个变量(栈区), 其实就是做个记号.
printf("%d",*val); // 解引用打印原地址存储对象的值,结果为1

按照你所述及上述我的解释,在python中要逐个操作my_list的元素,可以写为:
for val in my_list ....

总结:
1. for each in collections 使用时如字面意思, 每一个, 所以有些同行会经常用item(每一条)来命名.
2. each仅仅是堆区对象在内存中的引用, 只要符合命名规范, 可随意命名.
3. 通俗易懂的说就是win的快捷方式, 你可以访问, 可以修改其内容, 但是删除该变量, 不会删除源头, 除非把源头的删除, 即释放堆区内存.
4. 再举个栗子: 我问你和你朋友住在哪, 你告诉我你们住在上海浦东新区陆家嘴滨江大道旁的花园石桥路28栋XX楼XXX室, 我记在纸上, 如果去你们家, 我可以拿着这张纸一个个去找你们, 我把纸撕了, 也不会影响你们住在汤臣一品, 而我住在厕所的事实.

jackz007 发表于 2024-11-22 14:35:57

      each 只是一个普通变量,在对其命名这件事上,你拥有绝对的自由,例如,本人比较懒,通常会用 x 来搪塞这个变量。
页: [1]
查看完整版本: for each对each的理解问题