簡體   English   中英

列表理解中的多個循環

[英]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”中選取的元素數。 當然還有其他方法,但我想在上述條件下創建一個只有“列表理解”的列表。

通過一個簡單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]

預期 output: [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)])

退貨:

[1, 2, 2, 3, 5]

根據具體的“列表理解”條件。

盡管正如其他人在評論中所說,切片會更像 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)

Output

[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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM