簡體   English   中英

如何使用 Python 中的列表比較多次引用類似於輸入的內容?

[英]How would I reference something akin to an input more than once with list comp in Python?

例如,這個用於輸出單詞中間字符的簡單代碼 - 如果它有中間字符。

string = str(input("String: "))

print(list(letter for letter in string if letter == string[((len(string) - 1) // 2)]))

我可以在列表 comp 中輸入輸入,同時仍然能夠在另一部分引用它的長度嗎? 通常我用我在 list comp 中的輸入做這樣的事情:

print(''.join(str(y) for y in [x for x in str(input("Please enter a string: ")) 
if x.isnumeric() == False]))

只是想了解更多關於 list comp 的可能性。

一種方法是將其存儲在自己的列表中並使用for

string = input("String: ")

會成為

for string in [input("String: ")]

>>> print([letter for string in [input("String: ")] for letter in string if letter == string[(len(string) - 1) // 2]])
String: abcde
['c']

格式化為多行:

>>> print(
...     [letter for string in [input("String: ")]
...             for letter in string
...             if letter == string[(len(string) - 1) // 2]]
... )

此外,您的邏輯可能有不良行為。

String: abcdecccccc
['c', 'c', 'c', 'c', 'c', 'c', 'c']

如果我想把這樣的東西塞進一行,我會使用lambda

>>> print((lambda x: x[(len(x) - 1) // 2])(input()))
middle
d

不過,在這種情況下,我認為通過在自己的行上進行變量賦值可以大大提高可讀性。

暫無
暫無

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

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