|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
>>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
答案给的是
list1 = []
for x in range(10):
for y in range(10):
if x%2 == 0:
if y%2 != 0:
list1.append((x, y))
------------------------------------------------------------------------------------------------------------------
我做的是 ,
list1 = []
for x in range(10):
for y in range(10):
if (x%2 == 0) and (if y%2 !)= 0:
list1.append((x, y))
结果跑 idle 不出答案, 无解。 不太明白逻辑有何不同, 第一轮x为0 , Y 为0 , 都不符合条件, 这时, 答案的做法,是回到那一层?我的 应该是回到第一层For, 为何答案的做法能继续往下跑?
还有就是 append() 课上讲,只能加一个元素, 然后 这里加个括号又可以两个变量了, 那么我 加个括号放N多个逗号隔开变量,或者干脆加个[ ] 隔起来的列表也可以?
那么 跟 EXTEND() 区别又是什么勒 ?
本帖最后由 Twilight6 于 2020-7-4 06:33 编辑
结果跑 idle 不出答案, 无解。 不太明白逻辑有何不同?
逻辑并没错误,这里是因为你的语法错误导致的,Python 没有这种连续这样用 if 的语法,而且感叹号移到括号外,移动完后输出结果完全相同
错误 :(if y%2 !)= 0 ,改成这样 (y%2 != 0)即可
list1 = []
for x in range(10):
for y in range(10):
if (x%2 == 0) and (if y%2 != 0):
list1.append((x, y))
append() 课上讲,只能加一个元素, 然后 这里加个括号又可以两个变量了?那么我 加个括号放N多个逗号隔开变量,或者干脆加个[ ] 隔起来的列表也可以?
(x,y) 这是一个元组,算一个元素,不算两个;只要你是容器类型的值,在同一容器中,容器内的元素个数是相对容器而言的,而对于整个容器来是,这个容器就算一个元素
举个例子:>>> temp = [1]
>>> temp.append([1,2,3,4,5])
>>> print(temp)
[1,[1,2,3,4,5]]
>>>print(len(temp))
2
[1,2,3,4,5] 列表容器内有 5 个元素,而 假设 temp = [1] ,temp.append([1,2,3,4,5]) 这就算将这个 [1,2,3,4,5] 整个列表添加到 temp中
使得 temp=[1 , [1,2,3,4,5]] 这个时候你对 temp 使用 len(temp) 会发现只返回 2 ,说明 temp 的元素个数就只有2个 ,而且这个元素我们知道一个是整型元素 1,还有个列表元素 [1,2,3,4,5]
extend() 是用来合并两个列表的,在举个刚刚的例子:
>>> temp = [1]
>>> temp.extend([1,2,3,4,5])
[1,1,2,3,4,5] # 合并了两个列表,而不是将 列表添加到另一个列表中
这里 extend 使得 [1] 与 [1,2,3,4,5] 列表合并成为 [1,1,2,3,4,5]
|
|