访问列表中的值

时间:2017-11-01 17:33:00

标签: python list

new_list = [1, "hello"]
is_str = (type(str) is True)
for element in new_list:
    if (element is is_str):
        element = element.upper()

我正在尝试创建一个遍历列表中每个元素的循环,然后在找到字符串时以大写形式返回元素。但是,出于某种原因,我的if语句似乎对我不利。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

试试这个(正常方式):

new_list = [1, "hello"]

for element in new_list:

    if isinstance(element, str):
        element = element.upper()
        print(element)

Pythonic Way:

new_list = [1, "hello", "ssss"]
your_data = [element.upper() for element in new_list if isinstance(element, str)]
print(your_data)

另一种方式:

new_list = [1, "hello", None]

for element in new_list:

    if type(element) is str:
        element = element.upper()
        print(element)

关于您的评论:

new_list = [1, "hello", None, "hi", "book"]

for counter, element in enumerate(new_list):

    if isinstance(element, str):
        new_list[counter] = element.upper()

print(new_list)

答案 1 :(得分:0)

使用List Comprehension的单线程:

>>> [x.upper() for x in l if isinstance(x, str)]

#driver values:

IN : l = [1, 'adsa', 3, 'ASD']
OUT : ['ADSA', 'ASD']

您遇到的问题是由于您使用了elementupdate the list。使用index代替更新。

for i, element in enumerate(new_list):
    if type(element)==str:
        new_list[i] = element.upper()

答案 2 :(得分:0)

执行此操作的方式越多Pythonic就不会检查元素是否完全是字符串:

for element in new_list:
    try:
        uppercase_element = element.upper()
    except AttributeError:
        pass  # Skip this element as it can't be uppercased
    else:
        print uppercase_element

这比检查元素是否为字符串更有效的一个具体原因是,在Python 2中,Unicode对象不是字符串,但它们可以是大写的(可能应该在您提供的示例中)。