[英]How to get only lowercase strings from a list using list comprehension
問的問題:
使用列表推導生成僅包含my_list中小寫字母的列表。 打印結果列表。
['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
我的代碼:
my_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
hi = ([ char for char in range(len(my_list)) if char%2 == 0])
print(hi)
我嘗試了一下,但是得到了整數作為答案,而不是我想要的字符串。
注意:此處的幾個答案均假設您要選擇的是列表中的小寫字母值。 該答案假設這是一個示例,並且您要嘗試的是選擇列表中每個其他列表索引處出現的值。 (在我看來這是正確的解釋,因為這就是問題中的實現似乎試圖做的。)我不確定誰在這里誤解了這個問題,但是由於可以用多種方式解釋該問題,我認為這個問題可能在這里錯了。 在問題得到澄清之前,我認為應該擱置它。
最簡單,最快的方法是切片:
print(my_list[::2]) # Slice the whole list, with step=2
要復制您正在描述的邏輯,要在其中使用模2的索引來取值,那么您需要為理解中的列表生成索引和值,然后將其中一個用於過濾,將另一個用於過濾結果:
hi = [ch for ix, ch in enumerate(my_list) if ix % 2 == 0]
Python字符串具有islower
方法。 另外,您可以直接遍歷列表,而無需檢查其長度或索引的奇偶性。
my_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
hi = [char for char in my_list if char.islower()]
print(hi)
# ['a', 'b', 'c', d']
您的清單理解:
[char for char in range(len(my_list)) if char%2 == 0]
將產生整數而不是字符。 這是因為range(len(my_list))
給您索引。 相反,您需要獲取字符。
這可以使用enumerate()
:
[char for i, char in enumerate(my_list) if i % 2 == 0]
或使用較少的pythonic方法,僅使用索引my_list
:
[my_list[i] for i in range(len(my_list)) if i % 2 == 0]
您也可以使用str.islower()
過濾掉小寫字母:
[char for char in my_list if char.islower()]
這樣可以避免完全使用索引。
您可以按照以下方式使用列表理解,在其中迭代各個元素並使用.islower()
檢查它是否為小寫形式
my_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
lower = [i for i in my_list if i.islower()]
# ['a', 'b', 'c', 'd']
my_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
res = [ char for char in my_list if ord(char)>=97]
使用islower()
函數
l = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
result = [el for el in l if el.islower()]
要添加創建以下范圍(0,8)的范圍(len(my_list)),在這種情況下,char是一個整數,您將創建一個整數列表。
要生成僅包含小寫字母的列表,請使用“ islower”方法hi =([[char_islower()中char為my_list中的char])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.