相关疑难解决方法(0)

如何在for循环期间修改列表条目?

现在我知道在迭代循环期间修改列表是不安全的.但是,假设我有一个字符串列表,我想自己去除字符串.替换可变值是否算作修改?

python

150
推荐指数
5
解决办法
21万
查看次数

迭代时修改列表

l  = range(100)                         
for i in l:                         
    print i,                         
    print l.pop(0),                  
    print l.pop(0)
Run Code Online (Sandbox Code Playgroud)

上面的python代码给出了与预期完全不同的输出.我想循环遍历项目,以便我可以在循环时跳过项目.

请解释.

python iterator loops list

54
推荐指数
5
解决办法
8万
查看次数

遍历熊猫数据框列表

两个快速的熊猫问题供您选择。

  1. 我有一个要应用过滤器的数据框列表。

    countries = [us, uk, france]
    for df in countries:
        df = df[(df["Send Date"] > '2016-11-01') & (df["Send Date"] < '2016-11-30')] 
    
    Run Code Online (Sandbox Code Playgroud)

    当我运行它时,df之后不会更改。这是为什么?如果我遍历数据帧以创建一个新列,如下所示,则可以正常工作,并更改列表中的每个df。

     for df in countries:
          df["Continent"] = "Europe"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 作为后续问题,当我创建不同国家的数据框列表时,我注意到了一些奇怪的事情。我定义了列表,然后将转换应用于列表中的每个df。在转换了这些不同的dfs之后,我再次调用了该列表。我很惊讶地看到列表仍然指向未更改的数据帧,因此我不得不重新定义列表以更新结果。有人能解释为什么会这样吗?

python list pandas

5
推荐指数
1
解决办法
7925
查看次数

循环列表的两种方式 - 差异

我必须反转一个长度大于4的列表中的每个单词.所以我尝试了:

for word in words:
    if len(word) >= 5:
        word = word[::-1]
Run Code Online (Sandbox Code Playgroud)

它不起作用.但是这个:

 for i in range(len(words)):
        if len(words[i]) >= 5:
            words[i] = words[i][::-1]
Run Code Online (Sandbox Code Playgroud)

工作良好.有什么不同?

python

5
推荐指数
1
解决办法
122
查看次数

Python:通过for循环更改列表

我要再次问你另一个基本问题.:)我想通过for-loop更改列表.(抱歉打扰,但我是新的....)

这是第一个脚本:

L=[1,2,3]
i=0
for a in L:
    L[i]+=1
    i+=1
print(L)
print(a)
Run Code Online (Sandbox Code Playgroud)

我有:

L:[2,3,4]
a: 3
Run Code Online (Sandbox Code Playgroud)

这正是我想要的.但我注意到,如果我将脚本更改为:

L=[1,2,3]
for i in L:
    i+=1
print(L)
print(i)
Run Code Online (Sandbox Code Playgroud)

我得到了:

L:[1,2,3]
i:4
Run Code Online (Sandbox Code Playgroud)

我可以理解我必须是4.但问题是为什么列表L不会改变.在我看来,列表中的对象被赋予变量i.因此变量i是可以编辑对象的人.所以基本上,列表应该改变.然而,实际上,它保持不变.

有人可以解释一下吗?

谢谢!

python

2
推荐指数
1
解决办法
120
查看次数

在迭代python列表时修改元素时这种行为背后的原因是什么

在下面的代码中,第一种类型的修改改变了原始列表,而在第二个列表中保持不变。为什么行为是这样?

temp = [{"a":"b"},{"c":"d"},{"e":"f"},{"a":"c"}]

for item in temp:
    if "a" in item:
        item["a"] = "x"
print(temp)
Run Code Online (Sandbox Code Playgroud)
temp = [{"a":"b"},{"c":"d"},{"e":"f"},{"a":"c"}]

for item in temp:
    item  = {}
print(temp)
Run Code Online (Sandbox Code Playgroud)

第一个的输出是 [{'a': 'x'}, {'c': 'd'}, {'e': 'f'}, {'a': 'x'}]

第二个是 [{'a': 'b'}, {'c': 'd'}, {'e': 'f'}, {'a': 'c'}]

Python 版本是 3.6.5

python dictionary list python-3.x

2
推荐指数
1
解决办法
127
查看次数

for 循环中列表项未更改

当以下代码没有达到我预期的效果时,我感到震惊:

lines_list = ['this is line 1\n', 'this is line 2\n', 'this is line 3\n']
for line in lines_list:
    line = line.strip()
Run Code Online (Sandbox Code Playgroud)

在Perl或Java中,我的用法效果很好。Python 是具有独特行为的Python。

在 Java 中,这将起作用:

lines_list = ['this is line 1\n', 'this is line 2\n', 'this is line 3\n']
for line in lines_list:
    line = line.strip()
Run Code Online (Sandbox Code Playgroud)

在 Perl 中,这将起作用:

String[] lines = {"this is line 1\n", "this is line 2\n", "this is line 3\n"};
for (String line : lines) {
    line = line.trim();
} …
Run Code Online (Sandbox Code Playgroud)

python loops list

0
推荐指数
1
解决办法
2127
查看次数

标签 统计

python ×7

list ×4

loops ×2

dictionary ×1

iterator ×1

pandas ×1

python-3.x ×1