Python 关于在列表中查找 X 的索引的练习
Python exercise about finding indices of X in the list
def leesFormulier(l1):
index = 0
lres = []
for j in range(len(l1)):
for k in range(0,9,2):
if l1[j][k] == 'X':
lres.append(index+1)
index += 1
else:
index += 1
return lres
print(leesFormulier(l1 = ['1 X 3 4 X', 'X 7 X X 10', '11 12 13 14 15', '16 17 18 19 20', '21 22 23 24 25', '26 27 28 29 30', '31 32 33 34 35', '36 37 38 39 40', '41 42 43 44 X']))
result : [2, 5, 6, 8, 9]
大家好,
我正在 Python 上做一个练习,我必须找到可以找到 'X' 的位置的索引。我解决了大部分问题,但我遇到的唯一问题是最后一个 'X' 无法识别。我把它放在 Pythontutor 中,在那里我可以看到在最后一次通过 for 循环时它进入最后一个 k for 循环但它不检查它而是立即进入 j for lus然后结束迭代并转到 return 部分。我不知道我做错了什么,如果有人能帮助我,我将不胜感激。
提前致谢!
这个问题不需要所有那些索引或嵌套循环,你可以大大简化它
def lessFromulier(l1):
lres = []
new_string = " ".join(l1).split(" ")
for i, letter in enumerate(new_string):
if letter == "X":
lres.append(i+1)
return lres
test = [
"1 X 3 4 X",
"X 7 X X 10",
"11 12 13 14 15",
"16 17 18 19 20",
"21 22 23 24 25",
"26 27 28 29 30",
"31 32 33 34 35",
"36 37 38 39 40",
"41 42 43 44 X",
]
print(lessFromulier(test))
给出了这个输出
[2, 5, 6, 8, 9, 45]
你的意见对我来说真的很奇怪,但这里是你问题的解决方案
def leesFormulier(l1):
index = 0
lres = []
for i in range(len(l1)):
for j in range(len(l1[i])):
c = l1[i][j]
if c == ' ':
continue
if c == 'X':
index += 1
lres.append(index)
else:
index += 1
return lres
print(leesFormulier(l1 = ['1 X 3 4 X', 'X 7 X X 10', '11 12 13 14 15', '16 17 18 19 20', '21 22 23 24 25', '26 27 28 29 30', '31 32 33 34 35', '36 37 38 39 40', '41 42 43 44 X']))
def leesFormulier(l1):
index = 0
lres = []
for j in range(len(l1)):
for k in range(0,9,2):
if l1[j][k] == 'X':
lres.append(index+1)
index += 1
else:
index += 1
return lres
print(leesFormulier(l1 = ['1 X 3 4 X', 'X 7 X X 10', '11 12 13 14 15', '16 17 18 19 20', '21 22 23 24 25', '26 27 28 29 30', '31 32 33 34 35', '36 37 38 39 40', '41 42 43 44 X']))
result : [2, 5, 6, 8, 9]
大家好,
我正在 Python 上做一个练习,我必须找到可以找到 'X' 的位置的索引。我解决了大部分问题,但我遇到的唯一问题是最后一个 'X' 无法识别。我把它放在 Pythontutor 中,在那里我可以看到在最后一次通过 for 循环时它进入最后一个 k for 循环但它不检查它而是立即进入 j for lus然后结束迭代并转到 return 部分。我不知道我做错了什么,如果有人能帮助我,我将不胜感激。
提前致谢!
这个问题不需要所有那些索引或嵌套循环,你可以大大简化它
def lessFromulier(l1):
lres = []
new_string = " ".join(l1).split(" ")
for i, letter in enumerate(new_string):
if letter == "X":
lres.append(i+1)
return lres
test = [
"1 X 3 4 X",
"X 7 X X 10",
"11 12 13 14 15",
"16 17 18 19 20",
"21 22 23 24 25",
"26 27 28 29 30",
"31 32 33 34 35",
"36 37 38 39 40",
"41 42 43 44 X",
]
print(lessFromulier(test))
给出了这个输出
[2, 5, 6, 8, 9, 45]
你的意见对我来说真的很奇怪,但这里是你问题的解决方案
def leesFormulier(l1):
index = 0
lres = []
for i in range(len(l1)):
for j in range(len(l1[i])):
c = l1[i][j]
if c == ' ':
continue
if c == 'X':
index += 1
lres.append(index)
else:
index += 1
return lres
print(leesFormulier(l1 = ['1 X 3 4 X', 'X 7 X X 10', '11 12 13 14 15', '16 17 18 19 20', '21 22 23 24 25', '26 27 28 29 30', '31 32 33 34 35', '36 37 38 39 40', '41 42 43 44 X']))