Python:选择字符串项

Python: Pick String items

必须在 python 2.7 中完成,因为分配程序。

编写一个函数 def get_strings(mixed_list):,其中 return 是一个新列表,其中 mixedList 中的所有字符串类型项作为参数给出。字符串项的顺序必须与原始列表匹配。例如,如果使用这样的列表调用...

[1, 'a', 2, 'b', True, 'e']

该函数应该return一个像这样的列表:

['a', 'b', 'e']
l = []
s = string.ascii_letters
for i in range(random.randint(15,25)):
   r = random.randint(0,2)
   if r == 0:
     ind = random.randint(0, len(s) -1 )
     l.append(s[ind : ind + random.randint(1, 4) ])
   elif r == 1:
      l.append(random.randint(-50,50))
   else:
      l.append(random.choice([True, False, 1.0 / random.randint(1, 10) ]))

print ("Whole list:", l)
print ("Strings only:" , get_strings(l))

import random

你可以试试这个:

def get_strings(mixed_list):
    return [i for i in mixed_list if isinstance(i, str)]

对于 Python 2.7,正如@Bernana 建议的那样:

def get_strings(mixed_list):
    return [i for i in mixed_list if isinstance(i, basestring)]

考虑使用 list comprehension along with isinstance:

def get_strings(mixed_list):
    return [x for x in mixed_list if isinstance(x, str)]

l = [1, 'a', 2, 'b', True, 'e']
print ("Whole list:", l)
print ("Strings only:" , get_strings(l))

输出:

Whole list: [1, 'a', 2, 'b', True, 'e']
Strings only: ['a', 'b', 'e']

in python2.7 isinstance 不适用于 str 但适用于 basestring.

它应该看起来像:

    lst = [1, 'a', 2, 'b', True, 'e']
    l = []
    print([x for x in lst if isinstance(x, basestring)])