嘿堆栈溢出社区,
我正在尝试做一个简单的事情-从给定列表中弹出每个第i个元素,并删除每个元素中的任何前导/后缀空格。
问题是-每当我经过list.pop(i)
循环时,out of range
函数都会返回for i in range (0, len(games_list))
错误。
我能够使用list.pop(0)
而不是list.pop(i)
来解决这个问题。请帮助我理解原因。
实际代码如下。
我已经看过range
和.pop()
函数指南,但是并没有给我答案。
games_list = [
' The Movie: The Game',
' The Legend of Corgi',
' Dinosaur Diner']
for i in range(0, len(games_list)):
temp = games_list.pop(0)
temp = temp.strip()
games_list.append(temp)
print (games_list)
我希望输出如下:
['The Movie: The Game', 'The Legend of Corgi', 'Dinosaur Diner']
答案 0 :(得分:1)
由于game_list.pop(i)
还会删除i
处的元素,因此您正在迭代初始长度时缩短了列表。
通常,最好通过foreach遍历列表:
striped_games_list = []
for title in games_list:
striped_games_list.append(title.strip())
game_titles = striped_games_list # A better design would be to exclude this and simply use striped_game_list going forward
但是,在您的情况下,我建议您进行列表理解:
game_titles = [title.strip() for title in game_titles]
答案 1 :(得分:-1)
您的代码非Pythonic。您可以直接迭代列表中的元素而不是它们的索引,然后将剥离的元素收集到另一个干净的列表中,而不必弹出并追加到同一列表中。会回答您的问题吗?
<ul class="slideList">
<li data-transition="fade">
<div class="service-highlight">
<p class="services-box">SOME SERVICES:</p>
<p class="services-detail">Service headline detail</p>
<div class="hide-description">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam animi accusamus officia accusantium quaerat distinctio, omnis neque adipisci! Rerum nemo vitae necessitatibus autem fugit ipsam in nam asperiores. Eius, vitae.
</div>
<div class="clearFloat"></div>
</div>
</li>
<ul>