小编Dev*_*ngh的帖子

在迭代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
查看次数

Errno 22 无效参数:'F:\\Python\\Library\\resources\\icudtl.dat'

(base) F:\>conda install -c anaconda nltk
WARNING: The conda.compat module is deprecated and will be removed in a future release.
Collecting package metadata: done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
  current version: 4.6.11
  latest version: 4.6.14
Please update conda by running
    $ conda update -n base -c defaults conda
## Package Plan ##
  environment location: F:\Python
  added / updated specs:
    - nltk
......................................................
......................................................
Executing transaction: \ WARNING conda.gateways.disk.delete:unlink_or_rename_to_trash(138): Could not remove or rename …
Run Code Online (Sandbox Code Playgroud)

python-3.x

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

从列表列表中删除所有匹配的值

我有以下列表对象列表

myList = [[123,0.0,345,0.0,0.0,0.0],
 [45,0.0,0.0,0.0],
 [67,8,0.0,5,6,7,0.0]
Run Code Online (Sandbox Code Playgroud)

我想从此列表中删除所有零。

我遵循了这个问题,并按如下所示进行编码。

myList = list(filter(lambda j:j!=0,myList[i]) for i in range(len(myList)))
Run Code Online (Sandbox Code Playgroud)

但是我正在获取过滤器对象列表作为输出。代码中有什么错误。

[<filter object at 0x7fe7bdfff8d0>, <filter object at 0x7fe7a6eaaf98>, <filter object at 0x7fe7a6f08048>,
Run Code Online (Sandbox Code Playgroud)

python list

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

以单个下划线字符结尾的字符串

我试图找到正确的正则表达式来检测以单个下划线结尾的字符串,例如hello_, this_。到目前为止,我只能re.match("[aA-zZ](_)", string)检测到day __,ball__之类的字符串,即带有两个我不想使用的下划线。任何想法如何最后得到一个下划线的字符串。

谢谢

python regex

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

python如何实现串联?

例如,如果我尝试将三个字符串与+运算符:串联在一起,s = "s1" + "s2" + "s3"python如何处理它?
它会计算len1,len2,然后为大小为len1 + len2的新字符串分配内存,并重复执行直到+处理完所有运算符?
还是它可以计算所有操作数的长度并只执行一次分配?在这种情况下,可以安全地假设

s = "s1" + "s2" + "s3"
Run Code Online (Sandbox Code Playgroud)

执行速度比

s = "s1" + "s2"
s += "s3"
Run Code Online (Sandbox Code Playgroud)

或者,也许根本没有分配,只是某种程度上记住了操作数的内存地址及其顺序?
感谢有关python优化主题的文章建议。

python python-3.x

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

创建一个字典,将列表中元素的长度作为键

我有一个列表,其中有多个作为元组存储在列表中的元素,我想创建一个字典,其中键的长度为1,2等,而各个长度的元素。清单的例子是

combination = [('A',), ('B',), ('C',), ('D',), ('A', 'B'), ('A','C'),
 ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D'), ('A', 'B', 'C'), 
('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D'),('A', 'B', 'C', 'D')]
Run Code Online (Sandbox Code Playgroud)

我试过了 temp_dict = {len(i): i for i in combinations}

所需的输出是

{1: [('A',), ('B',), ('C',), ('D',)], 2: [('A', 'B'), ('A','C'),
 ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')], 3: [('A', 'B', 'C'), 
('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D')], 4: [('A', 'B', 'C', 'D')]}```
Run Code Online (Sandbox Code Playgroud)

python dictionary list

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

python 2和3的相同代码给出不同的结果

我的问题是我在客户端上运行python 3,而执行程序的服务器运行了python 2。

因此,我设置了以下脚本:

from math import radians, cos, sin, asin, sqrt, exp
from datetime import datetime
def dateSmoother(a, b):
    #Format the date
    a = datetime.strptime(a, "%Y-%m-%d")
    b = datetime.strptime(b, "%Y-%m-%d")
    diff = (a-b).days

    return exp(-(diff/h_date)**2)

def timeSmoother(a, b):
    # Since we only got readings from two different times
    # We first check to see if they are the same
    if (a==b):
        return exp(-(0/h_time)**2)
    else:
        return exp(-(12/h_time)**2)


h_date = 30
h_time = 12
a = "2013-11-01"
b = "2013-11-13"
print(dateSmoother(a, …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-3.x

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

reverse a list of Ordered pair in python

I have a list of Ordered pair in python like [(1,45),(21,28),(43,110),(4,81)] and I want to reverse each items in list like [(45,1),(28,21),(110,43),(81,4)]. what should I do?

python python-3.x

-1
推荐指数
1
解决办法
65
查看次数

Python 3 元组迭代。错误或预期行为?

如果我有一个包含单个可迭代项(列表或元组)的父列表,并且我遍历父列表,则循环运行一次,并将子列表或元组作为单个参数,但如果我使用元组对于父级,循环实际上遍历子级,循环多个,如下面的代码片段所示。这是预期的行为还是需要报告为错误?

非常感谢,大卫肖

test = [(1, 'one')]
for i in test:
    print(test)
Run Code Online (Sandbox Code Playgroud)

输出:

(1, 'one)
Run Code Online (Sandbox Code Playgroud)

Python

test = ((2, 'two'))
for i in test:
    print(test)
Run Code Online (Sandbox Code Playgroud)

输出:

2
'two'
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-3.x

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

标签 统计

python ×8

python-3.x ×6

list ×3

dictionary ×2

python-2.7 ×2

regex ×1