簡體   English   中英

具有多個 for 循環的列表理解

[英]List comprehension with multiple for loop

我嘗試通過閱讀 CL arguments 來進行列表理解

weights = [[int(arg) for arg in sys.argv[i]] for i in range(3,7)]

這是我實現的,但 output 是一個多維數組,如:

[[3], [4], [5], [6]]

我試圖用一行列表理解得到的是:

[3, 4, 5, 6]

我認為你把這件事復雜化了。 如果要將命令行 arguments 3-6 作為整數,請執行以下操作:

weights = [int(arg) for arg in sys.argv[3:7]]

請注意,如果缺少參數,則不會像您那樣拋出IndexError 如果您需要這種行為,請嘗試以下操作:

weights = [int(sys.argv[i]) for i in range(3, 7)]

如果您想要更好的 CL arg 解析,請查看argparse


請記住, sys.argv的元素是strings ,如果您像c for c in sys.argv[3]迭代一個字符串,您會得到字符*,這意味着如果您在像14這樣的命令行,它將被分成它的數字, 14 如果那是您真正想要的,請執行以下操作:

weights = [int(c) for i in range(3, 7) for c in sys.argv[i]]

* 技術上長度為 1 的字符串

您可以使用枚舉。 枚舉的工作方式如下:

a = ['a','b','c']
for i in enumerate(a):
     print(i)

#outputs
(0, 'a')
(1, 'b')
(2, 'c')

#This is the solution
[int(arg) for index,arg in enumerate(sys.argv) if index in range(3,7)]

暫無
暫無

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

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