我有一个如下所示的数组:
body {
background-image: url('http://i.stack.imgur.com/eWFou.jpg');
background-repeat:no-repeat;
background-position:center;
background-size:cover;//ANSWER
background-attachment:fixed;
width: 100%;
height: 100%;
}
我想创建一个新数组y,以便:
x = ['Green', 'Red', 'Red', 'Red', 'Green', ...]
我尝试过以下操作但不起作用:
y = [1, 0, 0, 0, 1, ...]
TypeError:list indices必须是整数,而不是str
答案 0 :(得分:2)
您可以创建所需映射的字典,然后将其映射到list
。如果您有很多案例,这会更灵活。
In [8]: x = ['Green', 'Red', 'Red', 'Red', 'Green']
In [9]: d = {'Green':1, 'Red':0}
In [10]: map(d.get, x)
Out[10]: [1, 0, 0, 0, 1]
答案 1 :(得分:1)
for v in <sequence>
遍历的元素&lt;序列&gt; 。
使用n
代替x[n]
并且不要忘记使用空列表初始化y
:
y = []
for n in x:
if n == 'Red':
p = 0
if n == 'Green':
p = 1
y.append(p)
如果x
中有2个不同的单词(绿色和红色),那么您可以使用列表理解来简化此操作,例如
y = [1 if == 'Green' else 0 for n in x]
甚至
y = [int(n == 'Green') for n in x]
否则创建字典并将颜色名称映射到相应的数字,例如
numbers = {
'Red': 0,
'Green': 1,
# More colors
}
y = [numbers[n] for n in x]