python中的a in b for a in c如何理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的a in b for a in c如何理解?相关的知识,希望对你有一定的参考价值。

不是x for x in y.别看错了

我很理解你的疑惑,我相信这个对任何一个第一次接触到这种写法的人都有疑惑,不过我已经明白它的执行顺序,其实最容易明白的就是写一个等效写法,“a in b for b in c”的写法跟“x for x in y”的写法并没有本质上的区别,只不过前者输出的b又作为“in”的参数继续运算一次而已(同理它还可以是其它运算,未必是a in b,只不过现在它是一个列表,如果c是一维的列表,那循环一次出来的b就是单个元素,假设它是数字,那就可以执行比如b+1 for b in c这种操作),这种一般都用于生成一个列表,说再多不如举个例子(以下例子皆为实测通过):

```

# 二维数组(在python中这个叫列表)

c = [[7, 8, 9], [1, 2, 3], [4, 5, 6]]


# 简易写法,结果: [7, 8, 9, 1, 2, 3, 4, 5, 6]

l1 = [a for b in c for a in b]

print(l1)


# 常规写法(相当于上边的简易写法),结果: [7, 8, 9, 1, 2, 3, 4, 5, 6]

l2 = []

for b in c:

for a in b:

l2.append(a)

print(l2)


# 上述的a还可以作为参数继续传入其它函数或在表达式中使用,比如作为in的参数,结果: [False, True, False]

# 解释一下执行顺序:先执行for in,循环一次就出来一个b,然后再执行num in b,num in b的结果(True/False)作为列表的

# 一个元素,至此一个循环结束,然后又开始下一个for in循环,直到所有元素循环完,最后产生一个元素值为True/False组成的列表!

num = 3

l3 = [num in b for b in c]

print(l3)


# 上面写法相当于

l4 = []

for b in c:

l4.append(num in b)

print(l4)


# a在表达式中参与表达式运算

# 结果:[8, 9, 10, 2, 3, 4, 5, 6, 7]

l5 = [a+1 for b in c for a in b]

print(l5)


# 该写法是上述写法的常规写法

l6 = []

for b in c:

for a in b:

l6.append(a+1)

print(l6)

```

提交答案后,发现百度会把空格缩进全都去掉,而缩进作为python的灵魂,没有了缩进的python代码根本没办法运行,所以我给你截个图,你复制代码后自己去缩进吧:

python的一种写法:a in b for b in c

又一次修改答案,这次我要吐槽一下,不要来这里问关于代码的问题,前面的代码你也看到了,百度知道根本无法嵌入代码,直接把代码当普通文本,空格缩进全给你去掉,然后我想着,好,文本的空格被你去掉我上传图片总行了吧?结果,这图片被压缩的模糊不清,勉强能看见,将就着看吧。

参考技术A

这个和x for x in y没什么区别

在迭代c的时候,分别是b里面找a。这个应该是一个列表生成式,结果是false或者true的一个list

如图

追问

其实我自己也测试过.结果也比较清楚.就是想更清晰的理解一下这个东西.表达式的结果仅取决于b中元素是否在c中有相同元素.最终得到的列表长度与c一样.然后就没有什么别的用法或者需要注意的地方了吗?

其实我自己也测试过.结果也比较清楚.就是想更清晰的理解一下这个东西.表达式的结果仅取决于b中元素是否在c中有相同元素.最终得到的列表长度与c一样.然后就没有什么别的用法或者需要注意的地方了吗?

追答

你分2个部分看,for a in c 是他的迭代次数,这个迭代要去干什么,就要去干前面的a in b,亦或者是其它表达式,a for a in c.他这个实际都是一样的。只不过是变量的时候 就是在迭代次数里面找a,是表达式的时候,就在迭代的时候去运行表达式。

c=[1,2,3,4]

def fun(a):

return a**a

d=[fun(a) for a in c]

print(d)

本回答被提问者采纳
参考技术B for a in c,循环遍历c中的元素,保存在变量a中。
a in b,判断a是否在b中。
生成一个True或者False的列表。
参考技术C in是成员运算符。这个语句中第一个in是对a 是否b成员进行判断;第二个in是列表推导式的语法中的结构,依次迭代C对象元素到a这个变量上。

python中的for i in range怎么用

for i in range(a,b,c)

a为循环开始的数字(可不填,默认为0),b为循环结束的后一位(c为正数时)的数字,c为步进的距离和方向,默认为1。

for i in range(1, 101,1):

print i

range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数。

for i in range(1, 101)就是说,把这些数,依次赋值给变量i。

相当于一个一个循环过去,第一次i = 1,第二次i = 2,……,直到i = 100。当i = 101时跳出循环。

扩展资料

for i in range实操:

fori in range(3):   

print(i)

>>>0,1,2

for i in range(10,0,-1):

print(i)

>>>10,9,8,7,6,5,4,3,2,1

参考资料:百度百科 - range

参考技术A

for in range是循环的意思。

示例:for i in range(1,5):

print(i)

上述语句的意思就是从1到5的循环,每循环一次打印一次i的值,1到5,共5回,打印五次i的值,即循环5次。

扩展资料:

    for循环是编程语言中一种开界的循环语句,而循环语句是由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。

    for循环中的变量可以是一个也可以是多个,不要局限于一个变量处理到底,那样有时会很单调,当程序适合把多个变量组成循环时,用多个for语句来表示就是有些浪费了!

    在C语言中,for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以缺省成只剩下“;”的空语句, ";"不能缺省的原因是编译格式如此,缺省了编译器不认识而会报错。

    省略了用来初始化的单次表达式时, 表示不对循环控制变量赋初值。

    省略了条件表达式, 若不做其它处理则成为死循环。

    省略了所有循环体, 则for语句不被其它形式处理时不产生任何作用。

参考资料:百度百科-for循环

参考技术B

Python 的 for i in range (m,n),相当于 C++/Java/C# 里面的 for (int i = m;  i < n; i++)。

比如:

参考技术C

你说的range是range函数么,比如下面这个例子:

for i in range(5):
print(i)

得到的结果是:

0
1
2
3
4

range(5)是range函数的一个基本应用例子,它产生一个序列,从0到5,但又不包括5,所以序列是0,1,2,3,4 。当要产生一个很长的序列时,range函数就很方便。具体的可以查一下range函数的用法。

如果你问的是迭代的基本概念,可以看下面这个例子:

a = [1,2,3,4]
for i in a:
    print(i)

得到的结果是

1
2
3
4

也就是说for i in a这句话依次遍历a中的元素,每次遍历的结果存到i,而且它会自己检查是否遍历完毕,当遍历完a中的元素后自动结束,不需要你去想办法判断是否遍历到了a的结尾。它的功能其实相当于:

int a[] = 1,2,3,4;
for(int i = 0;i<4;i++)
    printf(a[i]);

参考技术D

for循环语句是Python中的一个循环控制语句,任何有序的序列对象内的元素都可以遍历,比如字符串、列表、元组等可迭代对象。

Python中for循环的一般格式:第一行是要先定义一个赋值目标(迭代变量),和要遍历(迭代)的对像;首行后面是要执行的语句块。

for 目标 in 对像:
    print 赋值目标

Python2.x中range()函数会返回一个列表,返回的对象便可以用for循环进行遍历。下面的例子中,for循环对range()返回的列表进行遍历并打印。

for i in range(1,5):
    print i,
# 1 2 3 4

以上是关于python中的a in b for a in c如何理解?的主要内容,如果未能解决你的问题,请参考以下文章

python中的for循环取list中的第i 个值值

python中的for i in range怎么用

python中for _ in range () 中'_'的意思

Python“for in”循环打印列表中的最后一项

Python的流程控制 - for字典

Python中的*args和**kwargs理解