相关疑难解决方法(0)

什么是pythonic方法来检测python'for'循环中的最后一个元素?

我想知道对for循环中的最后一个元素进行特殊处理的最佳方法(更紧凑和"pythonic"方式).有一段代码只能元素之间调用,在最后一个元素中被抑制.

以下是我目前的工作方式:

for i, data in enumerate(data_list):
    code_that_is_done_for_every_element
    if i != len(data_list) - 1:
        code_that_is_done_between_elements
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?

注意:我不想使用hacks,例如使用reduce;)

python for-loop idioms fencepost

166
推荐指数
10
解决办法
15万
查看次数

如何遍历除列表的最后一项之外的所有项目?

我想循环检查每个项目的列表与其后面的项目.

有没有办法可以循环使用除了最后一项使用x中的所有项目?如果可以的话,我宁愿不使用索引.

注意

freespace回答了我的实际问题,这就是我接受答案的原因,但是SilentGhost回答了我应该问的问题.

为混乱道歉.

python

142
推荐指数
4
解决办法
15万
查看次数

从Python迭代器获取最后一项的最简洁方法

在Python 2.6中从迭代器获取最后一项的最佳方法是什么?例如,说

my_iter = iter(range(5))
Run Code Online (Sandbox Code Playgroud)

什么是最短的代码/最干净的方式4来自my_iter

我可以做到这一点,但它看起来效率不高:

[x for x in my_iter][-1]
Run Code Online (Sandbox Code Playgroud)

python iterator python-2.7 python-3.x

102
推荐指数
8
解决办法
4万
查看次数

如何在Python中以不同方式处理列表中的最后一个元素?

我需要对列表中的最后一个元素进行一些特殊操作.还有比这更好的方法吗?

array = [1,2,3,4,5] 
for i, val in enumerate(array): 
  if (i+1) == len(array): 
    // Process for the last element 
  else: 
    // Process for the other element 

python

49
推荐指数
3
解决办法
6万
查看次数

Python如何检查迭代器工具链中是否已到达最后一个元素?

for elt in itertools.chain.from_iterable(node):

if elt is the last element:
  do statement
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标

python

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

Python 3.x:测试生成器是否剩余元素

当我在for循环中使用生成器时,它似乎"知道",当没有更多元素产生时.现在,我必须使用没有for循环的生成器,并手动使用next()来获取下一个元素.我的问题是,我怎么知道,如果没有更多的元素?

我只知道:next()引发一个异常(StopIteration),如果没有剩下的东西,那么对于这样一个简单的问题来说,这不是一个例外吗?是不是像has_next()那样的方法?

以下几行应该说清楚,我的意思是:

#!/usr/bin/python3

# define a list of some objects
bar = ['abc', 123, None, True, 456.789]

# our primitive generator
def foo(bar):
    for b in bar:
        yield b

# iterate, using the generator above
print('--- TEST A (for loop) ---')
for baz in foo(bar):
    print(baz)
print()

# assign a new iterator to a variable
foobar = foo(bar)

print('--- TEST B (try-except) ---')
while True:
    try:
        print(foobar.__next__())
    except StopIteration:
        break
print()

# assign …
Run Code Online (Sandbox Code Playgroud)

iteration yield generator next python-3.x

17
推荐指数
4
解决办法
9169
查看次数

让csv.reader告诉它何时在最后一行

显然,某些csv输出实现会在最后一行的右侧截断字段分隔符,而在字段为空时仅截断文件中的最后一行.

示例输入csv,字段'c'和'd'可以为空:

a|b|c|d
1|2||
1|2|3|4
3|4||
2|3
Run Code Online (Sandbox Code Playgroud)

在下面的脚本中,我怎么知道我是否在最后一行,所以我知道如何正确处理它?

import csv

reader = csv.reader(open('somefile.csv'), delimiter='|', quotechar=None)

header = reader.next()

for line_num, row in enumerate(reader):
    assert len(row) == len(header)
    ....
Run Code Online (Sandbox Code Playgroud)

python csv

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

获取python循环中的第一个和最后一个项目

是否有一种优雅和pythonic的方法来捕获for循环中的第一个和最后一个项目,迭代生成器?

from calendar import Calendar

cal = Calendar(6)
month_dates = cal.itermonthdates(year, month)
for date in month_dates:
    if (is first item):     # this is fake
        month_start = date
    if (is last item):      # so is this
        month_end = date
Run Code Online (Sandbox Code Playgroud)

此代码尝试获取该月结束的一周中的第一天,以及该月结束的一周中的最后一天.示例:对于6月,月开始应评估为5/31/09.虽然从技术上说它是五月的一天,但这是六月开始的一周的第一天.

月日是一个生成器,所以我不能做[:-1]的事情.有什么更好的方法来处理这个问题?

python for-loop

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

For循环中的Python最后迭代

有没有简单的方法在Python中找到for循环的Last Iteration?我只想将列表转换为CSV.

python

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

使用python的readlines时忽略last \n

我有一个我从中读取的文件,如下所示:

1   value1
2   value2
3   value3
Run Code Online (Sandbox Code Playgroud)

该文件在最后一行中可能有也可能没有尾随\n.

我正在使用的代码效果很好,但如果有一个尾随\n它失败了.
什么是抓住这个的最好方法?

我的代码供参考:

r=open(sys.argv[1], 'r');
for line in r.readlines():
    ref=line.split();
    print ref[0], ref[1]
Run Code Online (Sandbox Code Playgroud)

哪一个会失败的:
Traceback(最近一次调用最后一次):
文件"./test",第14行,在
print ref [0]中,ref [1]
IndexError:列表索引超出范围

python readlines

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

如何检查列表是否已到达?

如果有一个列表,比方说a=[1,2,3],我希望看到if a[4] is null,有没有办法做到这一点,而不使用异常或断言?

python list

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

python:我怎么知道我什么时候在最后一个周期

for i in range(len(results_histogram)):
    if i!=len(results_histogram)-1:
      url+=str(results_histogram[i])+','
Run Code Online (Sandbox Code Playgroud)

我的if语句正在检查我是否在最后一个循环中,但它不起作用.我究竟做错了什么?

python syntax

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