Есть ли способ в Python начать переменную с 0, а затем увеличить на 1, находясь в for l oop? - PullRequest
0 голосов
/ 04 августа 2020

Ниже приведен раздел моего кода, и я пытаюсь начать с дня в 0, а затем в 1, 2, 3, 4, так что всего 5 дней, начиная с 0. Есть ли простой способ сделать это, потому что в в тот момент, когда у меня есть только дни 1, 2, 3, 4, 5, поскольку у меня есть day = day + 1, что не позволяет иметь день 0? Извините, если это глупый вопрос, я все еще относительно новичок в изучении Python.

density = np.zeros((6, 91, 181))
day = 0
for i,e in df.iterrows():
    lat = int((e['Latitude']+90)/2)
    long = int(e['Longitude']/2)
    if lat == 0.0 and long == 0.0:
        day = day + 1
        print(day)
    density[day,lat,long] = e['rho']

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

range() создает повторяемый объект, который вы можете использовать для этой цели, начиная с 0 и заканчивая любым указанным вами значением:

density = np.zeros((6, 91, 181))
days = range(5)                      # assign days to be an iterator, e.g. range()
for i,e in df.iterrows():
    lat = int((e['Latitude']+90)/2)
    long = int(e['Longitude']/2)
    if lat == 0.0 and long == 0.0:
        day = next(days)             # assign day by popping the first value from that iterator
        print(day)
    density[day,lat,long] = e['rho']

Если вместо этого вы хотите, чтобы бесконечный список чисел возрастал с нуля , вы можете создать свой собственный генератор бесконечных чисел:

def inf_ints():
    i = 0
    while True:
        yield i
        i += 1

...
days = inf_ints()
...
1 голос
/ 04 августа 2020

Не совсем уверен, чего вы хотите достичь, но если бы вы инициализировали день с -1 вместо 0, разве это не решило бы вашу проблему?

...