[英]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
這樣的命令行,它將被分成它的數字, 1
和4
。 如果那是您真正想要的,請執行以下操作:
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.