列表理解中的多个循环
Multiple loop in list comprehension
我手头有个问题集,描述是这样的:
我们有 2 个列表,即“nums1”和“nums2”以及 2 个整数 m 和 n
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
此处“m”表示要从“nums1”中选取的元素数,“n”表示要从“nums2”中选取的元素数。
当然还有其他方法,但我想在上述条件下创建一个只有 "list comprehension" 的列表。
通过一个简单的 for
循环,我可以通过以下方式实现:
li = []
for i in range(m):
li.append(nums1[i])
for j in range(n):
li.append(nums2[j])
print(li)
我尝试了以下方法,但结果不如预期:
[a for a in nums1 for b in nums2]
预期输出:
[1, 2, 2, 3, 5]
另外,列表解析是否支持多循环?
鉴于以下情况:
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
严格使用列表推导式,下面的内容将满足您的要求:
sorted([nums1[a] for a in range(m)] + [nums2[b] for b in range(n)])
Returns:
[1, 2, 2, 3, 5]
as per the conditions with "List comprehension" to be specific.
虽然正如其他人在评论中所说的那样,切片会更像 pythonic 并且更容易推理。但是既然你要求列表理解实现,那么这就是你将得到的答案。
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
ll = sorted([a for b in [nums1[:m], nums2[:n]] for a in b])
print(ll)
输出
[1, 2, 2, 3, 5]
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
如果稍后需要在程序中访问返回值,请创建一个空列表并将返回值存储在此列表中
nums3 = []
[nums3.append(nums1[i]) for i in range(m)]
[nums3.append(nums2[i]) for i in range(n)]
排序并打印新创建的列表
print(sorted(nums3))
我手头有个问题集,描述是这样的:
我们有 2 个列表,即“nums1”和“nums2”以及 2 个整数 m 和 n
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
此处“m”表示要从“nums1”中选取的元素数,“n”表示要从“nums2”中选取的元素数。 当然还有其他方法,但我想在上述条件下创建一个只有 "list comprehension" 的列表。
通过一个简单的 for
循环,我可以通过以下方式实现:
li = []
for i in range(m):
li.append(nums1[i])
for j in range(n):
li.append(nums2[j])
print(li)
我尝试了以下方法,但结果不如预期:
[a for a in nums1 for b in nums2]
预期输出: [1, 2, 2, 3, 5]
另外,列表解析是否支持多循环?
鉴于以下情况:
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
严格使用列表推导式,下面的内容将满足您的要求:
sorted([nums1[a] for a in range(m)] + [nums2[b] for b in range(n)])
Returns:
[1, 2, 2, 3, 5]
as per the conditions with "List comprehension" to be specific.
虽然正如其他人在评论中所说的那样,切片会更像 pythonic 并且更容易推理。但是既然你要求列表理解实现,那么这就是你将得到的答案。
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
ll = sorted([a for b in [nums1[:m], nums2[:n]] for a in b])
print(ll)
输出
[1, 2, 2, 3, 5]
nums1 = [1, 2, 3, 7, 8, 9]
m = 3
nums2 = [2, 5, 6]
n = 2
如果稍后需要在程序中访问返回值,请创建一个空列表并将返回值存储在此列表中
nums3 = []
[nums3.append(nums1[i]) for i in range(m)]
[nums3.append(nums2[i]) for i in range(n)]
排序并打印新创建的列表
print(sorted(nums3))