相关疑难解决方法(0)

python:列表索引超出范围错误

我写了一个简单的python程序

l=[1,2,3,0,0,1]
for i in range(0,len(l)):
       if l[i]==0:
           l.pop(i)
Run Code Online (Sandbox Code Playgroud)

这给了我错误'列表索引超出范围'在线 if l[i]==0:

经过调试后,我可以发现i它正在增加并且列表正在减少.
但是,我有循环终止条件i < len(l).那我为什么会收到这样的错误呢?

python list

33
推荐指数
4
解决办法
64万
查看次数

从列表中删除项目 - 在迭代期间 - 这个成语有什么问题?

作为一个实验,我这样做了:

letters=['a','b','c','d','e','f','g','h','i','j','k','l']
for i in letters:
    letters.remove(i)
print letters
Run Code Online (Sandbox Code Playgroud)

最后一次打印显示并非所有项目都被删除了?(每隔一个人).

IDLE 2.6.2      
>>> ================================ RESTART ================================
>>> 
['b', 'd', 'f', 'h', 'j', 'l']
>>> 
Run Code Online (Sandbox Code Playgroud)

对此有何解释?如何重新编写以删除每个项目?

python loops list

24
推荐指数
5
解决办法
2万
查看次数

Python如何在内部管理'for'循环?

我正在尝试学习Python,我开始使用一些代码:

a = [3,4,5,6,7]
for b in a:
    print a
    a.pop(0)
Run Code Online (Sandbox Code Playgroud)

输出是:

[3, 4, 5, 6, 7]
[4, 5, 6, 7]
[5, 6, 7]
Run Code Online (Sandbox Code Playgroud)

我知道在我循环的时候改变数据结构并不是一个好的做法,但我想了解Python在这种情况下如何管理迭代器.

主要问题是:如果我改变状态,它如何知道它必须完成循环a

python for-loop data-structures

16
推荐指数
2
解决办法
2976
查看次数

为什么带有pop-method(或del语句)的for循环不会遍历所有列表元素

我是Python新手并尝试使用Python 3.2.3(默认,2012年10月19日,20:13:42),linux2上的[GCC 4.6.3]

这是我的样本代码

>>> l=[1,2,3,4,5,6]
>>> for i in l:
...     l.pop(0)
...     print(l)
... 
Run Code Online (Sandbox Code Playgroud)

我期待以下输出

1
[2, 3, 4, 5, 6]
2
[3, 4, 5, 6]
3
[4, 5, 6]
4
[5, 6]
5
[6]
6
[]
Run Code Online (Sandbox Code Playgroud)

相反,我得到了这个

1
[2, 3, 4, 5, 6]
2
[3, 4, 5, 6]
3
[4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

for循环在3转后停止迭代.有人可以解释一下原因吗?

python loops for-loop list

8
推荐指数
2
解决办法
6307
查看次数

删除JSON对象中的元素

我试图循环删除每个对象中的元素的对象列表.每个对象都是一个新行.我试图保存新文件,而不包含对象中包含的元素.我知道这可能是一项简单的任务,但我似乎无法完成这项工作.如果有人能提供帮助,将不胜感激.谢谢.

{
"business_id": "fNGIbpazjTRdXgwRY_NIXA",
"full_address": "1201 Washington Ave\nCarnegie, PA 15106",
"hours": {
    "Monday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Tuesday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Friday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Wednesday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Thursday": {
        "close": "23:00",
        "open": "11:00"
    },
    "Saturday": {
        "close": "23:00",
        "open": "11:00"
    }
},
"open": true,
"categories": ["Bars", "American (Traditional)", "Nightlife", "Lounges", "Restaurants"],
"city": "Carnegie",
"review_count": 7,
"name": "Rocky's Lounge",
"neighborhoods": [],
"longitude": -80.0849416,
"state": "PA",
"stars": 4.0,
"latitude": …
Run Code Online (Sandbox Code Playgroud)

python jsonobject

8
推荐指数
1
解决办法
7万
查看次数

迭代列表删除项目,一些项目不会被删除

我正在尝试将一个列表的内容转移到另一个列表,但它不起作用,我不知道为什么不.我的代码看起来像这样:

list1 = [1, 2, 3, 4, 5, 6]
list2 = []

for item in list1:
    list2.append(item)
    list1.remove(item)
Run Code Online (Sandbox Code Playgroud)

但如果我运行它,我的输出看起来像这样:

>>> list1
[2, 4, 6]
>>> list2
[1, 3, 5]
Run Code Online (Sandbox Code Playgroud)

我的问题有三个,我猜:为什么会发生这种情况,如何让它发挥作用,我是否会忽略一个非常简单的解决方案,如"移动"声明或其他什么?

python list

7
推荐指数
2
解决办法
725
查看次数

为什么list.remove()的行为不像人们预期的那样?

from pprint import *

sites = [['a','b','c'],['d','e','f'],[1,2,3]]

pprint(sites)

for site in sites:
        sites.remove(site)

pprint(sites)
Run Code Online (Sandbox Code Playgroud)

输出:

[['a', 'b', 'c'], ['d', 'e', 'f'], [1, 2, 3]]
[['d', 'e', 'f']]
Run Code Online (Sandbox Code Playgroud)

为什么不是None,或者是空列表[]?

python

7
推荐指数
2
解决办法
7824
查看次数

如果元组的第一项等于任何给定的字符串,则从列表中删除元组

我有一个列表如下:

device = [('nvme2n1',), 
          ('nvme1n1', '/local'), 
          ('nvme0n1',), 
          ('nvme0n1p1', '/'),
          ('nvme0n1p128',), 
          ('nvme3n1',)]
Run Code Online (Sandbox Code Playgroud)

我想从这个列表中删除几个包含nvme1n1ornvme0n1p1nvme0n1p128or 的元组nvme0n1

所以最终名单将有

final_device = [('nvme2n1',),('nvme3n1',)]
Run Code Online (Sandbox Code Playgroud)

尝试如下但没有工作并出现错误 "AttributeError: 'tuple' object has no attribute 'startswith'"

for word in devices[:]: 
    if word.startswith("nvme0n1","nvme0n1p1","nvme0n1p128"): 
        devices.remove(word)
Run Code Online (Sandbox Code Playgroud)

有人能帮忙吗?

python

7
推荐指数
3
解决办法
181
查看次数

对双胞胎团聚的概率进行编程

我有如下问题,我尝试过但找不到正确的结果。我想以简单的方式解决它,而不使用额外的库。我没有任何数据可以分享,因为我无法建立正确的逻辑。

4对双胞胎(共8个孩子)闭着眼睛玩耍。当某个时刻到来时,随机分布的小组中的孩子们会成对地握住彼此的手。如何编写一个python脚本,列出所有可能性并标记兄弟姐妹握住对方手的概率?

list = ['a1', 'a2', 'b1', 'b2', 'c1', 'c2', 'd1', 'd2']
Run Code Online (Sandbox Code Playgroud)

我想得到这样的结果:

[a1a2, b1b2, c1c2, d1d2] - Found
[a1a2, b1b2, c1d1, c2d2] - Not found
[a1a2, b1b2, c1d2, c2d1] - Not found
[a1a2, b1b2, c1d1, c2d2] - Not found
[a1a2, b2b1, c1d1, c2d2] - Not found
...
all possible matches
...
Run Code Online (Sandbox Code Playgroud)

感谢帮助。

python algorithm hash

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

当我迭代列表时释放内存

我有一个关于 python 中列表的内存使用情况的假设问题。我有一个很长的列表my_list,如果加载到内存中,它会消耗多个千兆字节。我想循环该列表并在迭代期间仅使用每个元素一次,这意味着我可以在循环它们后从列表中删除它们。当我循环时,我正在内存中存储其他内容,这意味着我分配的内存my_list现在需要用于其他内容。因此,理想情况下,我想在循环遍历列表元素时删除列表元素并释放内存。

I assume, in most cases, a generator would make the most sense here. I could dump my list to a csv file and then read it line by line in a for-loop. In that case, my_list would never be loaded into memory in the first place. However, let's assume for the sake of discussion I don't want to do that.

Is there a way of releasing the memory of a list as I …

python memory-management list

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