列表推导式
本帖最后由 lzb1001 于 2023-5-4 15:31 编辑>>> list1 =
>>> list1
相当于:
list1 = []
for x in range(10):
list1.append(x**2)
我按上面说的测试:
>>> list1 = []
>>> for x in range(10):
list1.append(x ** 2)
print(list1)
你的例子展示了如何用两种方法创建一个包含前10个平方数的列表。第一种方法是使用列表推导式(list comprehension),第二种方法是使用普通的for循环。
列表推导式是一种简洁的方式来创建列表,它在一行代码中完成了循环和列表添加操作。如你所示:
list1 =
这一行代码相当于下面这段普通的for循环:
list1 = []
for x in range(10):
list1.append(x**2)
当你在第二种方法中加入了 print(list1) ,你展示了在每次循环时列表是如何逐步添加元素的。因此,每一次循环后,列表会变得越来越长,直到最后包含所有的平方数。 你的问题是什么?不会?
如果是不会的话,
以下是对你提供的代码的解释:
这段代码使用列表生成式创建了一个名为list1的列表,其中包含从0到9每个数的平方。在循环中,range(10)函数产生一个从0到9的整数序列,对于每个整数x,x**2计算出它的平方,并添加到list1列表中。最终,list1列表包含了所有0到9之间整数的平方。
在第二段代码中,使用for循环和append方法手动实现了与列表生成式相同的操作。代码中的循环执行了10遍,每次迭代都把当前整数的平方加入list1列表。在每次迭代结束时,打印一下list1列表,可以看到该列表不断增长,直到包含所有0到9之间整数的平方。
本帖最后由 lzb1001 于 2023-5-4 18:53 编辑
>>> list1 = ['1.Just do it!', '2.一切皆有可能!', '3.让编程改变世界!', '4.Impossible is Nothing!']
>>> list2 = ['4.阿迪达斯', '2.李宁', '3.鱼C工作室', '1.耐克']
>>> list3 = for slogan in list1 for name in list2 if slogan == name]
>>> print(list3)
['1.耐克:Just do it!', '2.李宁:一切皆有可能!', '3.鱼C工作室:让编程改变世界!', '4.阿迪达斯:Impossible is Nothing!']
>>> for each in list3:
print(each)
1.耐克:Just do it!
2.李宁:一切皆有可能!
3.鱼C工作室:让编程改变世界!
4.阿迪达斯:Impossible is Nothing!
我的问题是针对 list3 = for slogan in list1 for name in list2 if slogan == name]
1.小甲鱼不是说不要使用连接符+来拼接字符串吗?
2、list3的推导式有点看不明白:
(1)slogan是指list1中去除序号和点以后的内容?为什么可以这样表示?我特地测试了下面的
>>> str1 = 'laizhibin'
>>> str1
'i'
>>> str1
'izhibin'
>>> str2 = ['laizhibin']
>>> str2
Traceback (most recent call last):
File "<pyshell#165>", line 1, in <module>
str2
IndexError: list index out of range
>>> str2
[]
>>> str3 = ['1.Just do it!', '2.一切皆有可能!', '3.让编程改变世界!', '4.Impossible is Nothing!']
>>> str3
'3.让编程改变世界!'
>>> str3 # 与slogan返回结果完全不同!!!
['3.让编程改变世界!', '4.Impossible is Nothing!']
(2)slogan和name分别是指list1和list2中的序号吧?为什么可以这样表示?
(3)slogan == name是为了在list1和list2中通过序号建立一一对应的关联关系?
3、生成结果为何会按1-4的顺序排列呢? 本帖最后由 陈星钰 于 2023-5-4 18:18 编辑
那个slogan是什么意思,为什么要切片啊
后面的if语句是为了通过下标索引进行的对齐吗
页:
[1]