2016-04-05 27 views
-1

例如,我将如何定义一个函数,以便列表中的每个奇数都被字符串'odd'替换?由于如何用python中的字符串替换列表中的整数?

list = [10 , 11, 12, 13, 14, 15, 16,] 

预期的结果

[10, 'odd', 12, 'odd', 14, 'odd', 16] 
+2

你有没有读过关于循环和条件? – Reti43

+1

注意:请不要将变量命名为与内置Python相同的变量。在这种情况下,'list'然后掩盖内置函数'list(iterator)' – dawg

回答

0
for i in range(len (list)): 
    if (list[i] % 2 != 0): 
     list[i] = "odd" 
+0

0到range的第一个参数可以省略。也就是说,通常只是写'range(len(list))'。 –

+0

好的。我有一段时间没有用过python。我现在要改变它 –

+0

最好在枚举(列表)中为'i,x:如果x%2:list [i] ='odd'' – dawg

0

您可以使用列表理解:

list = [10 , 11, 12, 13, 14, 15, 16] 
new_list = [i if i % 2 == 0 else "odd" for i in list] 

这里是它如何工作的一个很好的例子:if/else in Python's list comprehension?

+0

从技术上讲,这不是OP要求的。 OP要求替换列表中的奇怪元素,而不是生成一个替换奇怪元素的新列表。这对OP是否重要尚不清楚,但它确实创建了一个新的清单。 –

+1

你可以做'list [:] = ...'而不是'new_list = ...'你不应该使用'list'作为变量名,因为它会影响内置类型。你也可以''“奇数”如果我%2其他我为我在列表中]' – zondo

1

我觉得你应该是可能的Ÿ得到解决你自己的,但无论如何...

result = [] 
for i in list: 
    if i % 2 != 0: 
     result.append('odd') 
    else: 
     result.append(i) 

或者,也许事情向前推动你:

def turn_odd(i): 
    if i % 2 != 0: 
     return 'odd' 
    else: 
     return i 

list = [10 , 11, 12, 13, 14, 15, 16,] 
result = map(lambda x: turn_odd(x), list) 
1

一个行的解决方案可能是:

print [(i,'odd')[i%2] for i in list] 
+1

反向元组更清晰:'[(x,'奇怪')[x%2]为列表中的x]' – dawg

+0

使用元组''(x,'odd')'而不是列表'[x,'odd']是更好的,因为元组被构造一次并且列表每次都通过循环... – dawg

0

首先请注意list是为Python中的类型列表保留的,所以我将使用my_list来代替。然后,你有三种选择:

与条件

for i in range(0, len(my_list)): 
    if (i % 2 != 0): 
     my_list[i] = "odd" 

列表理解环路(相同的逻辑如上)

my_list = ["odd" if i % 2 != 0 else my_list[i] for i in range(len(my_list))] 

环路没有条件

for i in range(1, len(my_list), 2): 
    my_list[i] = "odd" 
+0

谢谢 - 编辑。 –

相关问题