问的问题:
使用列表推导生成一个仅包含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)
我尝试了一下,但是得到了整数作为答案,而不是我想要的字符串。
答案 0 :(得分:5)
注意:这里的几个答案假设您要选择的是列表中的小写值。该答案假定这是一个示例,并且您要尝试做的是选择列表中每个其他列表索引处出现的值。 (在我看来这是正确的解释,因为这就是问题中的实现似乎正在尝试执行的操作。)我不确定谁在这里误解了该问题,但是由于该问题可以可以用多种方式来解释,我认为这里的问题可能是错误的。在问题得到澄清之前,我认为应该将其搁置。
最简单,最快的方法是切片:
print(my_list[::2]) # Slice the whole list, with step=2
要复制您描述的逻辑,要在其中使用模数为2的 indexes 的值,那么您需要在理解中生成索引和列表的值,其中一个用于过滤,另一个用于结果:
hi = [ch for ix, ch in enumerate(my_list) if ix % 2 == 0]
答案 1 :(得分:5)
您的列表理解:
[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]
或者仅使用索引my_list
的Python语言:
[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()]
避免完全使用索引。
答案 2 :(得分:4)
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']
答案 3 :(得分:2)
您可以按照以下方式使用列表推导,在其中迭代各个元素并使用.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']
答案 4 :(得分:0)
my_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
res = [ char for char in my_list if ord(char)>=97]
答案 5 :(得分:0)
使用islower()
函数
l = ['a', 'A', 'b', 'B', 'c', 'C', 'd', 'D']
result = [el for el in l if el.islower()]
答案 6 :(得分:0)
添加一个范围(len(my_list)),以创建以下范围(0,8) 并且在这种情况下,char是一个整数,您将创建一个整数列表。
要生成仅包含小写字母的列表,请使用“ islower”方法 嗨=([[char_islower()中char为my_list中的char)]