RTX_number = [int(x) for x in input().split()]
有人可以一步一步地向我解釋這行代碼嗎?我很難理解它。據我所知, .split 在元素之間創建空格?
我在論壇上看到了這段代碼,我試圖更好地理解它,因為我認為它可能對模擬專案有幫助。
我聽說這被稱為串列理解,但我現在有點迷茫。
uj5u.com熱心網友回復:
input().split()
讀取一行并將其在有空格的地方拆分為字串串列。
for x in input().split()
獲取此串列,逐項遍歷它,并將此項系結到 x。
int(x) for ...
獲取我們系結的這個 x,并對其運行 int(x) 并回傳它。
[int(x) for x in input().split()]
獲取所有這些結果并將它們放入串列中。
uj5u.com熱心網友回復:
簡短的版本是這樣的:
RTX_number = [int(x) for x in input().split()]
是一個簡短的形式:
RTX_number = []
for x in input().split():
RTX_number.append(int(x))
whereinput().split()回傳您從分隔input()每個空格上回傳的任何內容獲得的字串串列(例如,"Hello World"變成["Hello", "World"].
該str.split()函式也可以被賦予一個引數,例如',',它將拆分而不是空格。
推導式的一般語法是
(expression) for (element) in (iterable) if (condition)
對于每一個元件element在iterable,如果condition決議為真(注意該條件可被完全省略)的expression評價,并添加到回傳的串列。
我們通常使用推導式作為完整回圈的簡寫,因為它們通常可以節省空間和復雜性。
請注意,串列推導式并不是唯一的推導式 - 它們可用于制作幾種不同的資料結構:
# list comprehension - produces a list
[expression for element in iterable]
# set comprehension - produces a set instead of a list
{expression for element in iterable}
# dict comprehension - produces a dict with key-value pairs
{key:value for element in iterable}
# generator comprehension - like a list comprehension, but each expression is not
# actually evaluated until something tries to read it.
# The parentheses are technically optional, if the syntax isn't ambiguous
(expression for element in iterable)
uj5u.com熱心網友回復:
此代碼等效于:
# ask user input (it expected something like "1 2 34 5")
input_text = input()
# split on spaces
split_text_list = input_text.split()
list_of_integers = []
# for each string item in list
for item in split_text_list:
# convert to integer
number = int(item)
# add to list
list_of_integers.append(number)
但當然它避免了所有不必要的中間變數,所以它更短。也更快,因為它不需要存盤中間值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317976.html
下一篇:gRPC服務器關閉時永遠掛起
