Обновите первый элемент в списке, содержащем диапазон целых чисел

В диапазоне списка, который содержит интервал (1-59/4), я хочу, чтобы только первый элемент менялся на все 3 строки.

n = 14
lis_num = []

for x in range(n):
   lis_num.append('need the logic')

output of lis_num should be like below:
1 1-59/4
2 2-59/4
3 3-59/4
4 1-59/4
5 2-59/4
6 3-59/4
7 ..
8 ..
.....
14 ..

и так далее с 0 по 13 ряд.

Я еще ничего не пробовал, ищу идею, как мы можем к этому подойти.

Непонятно, каковы входные данные и какой ожидаемый результат?

Mortz 06.03.2024 10:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
97
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете использовать np.arange и оператор по модулю, затем преобразовать в строку и объединить фиксированную часть:

import numpy as np
import pandas as pd

n = 14

out = pd.Series(np.arange(n)%3+1).astype(str)+'-59/4'

# or
out = pd.Series(np.arange(n)%3+1, dtype=str)+'-59/4'

В качестве альтернативы можно использовать np.tile (менее эффективно, но, возможно, более универсально, если у вас произвольные префиксы):

prefixes = ['1', '2', '3']
n = 14

out = pd.Series(np.tile([f'{p}-59/4' for p in prefixes], int(np.ceil(n/3)))[:n])

Или с помощью вашего цикла (не рекомендуется, если вам нужен массив/серия в качестве вывода):

n = 14
lis_num = []

for x in range(n):
   lis_num.append(f'{x%3+1}-59/4')

out = pd.Series(lis_num)

Выход:

0     1-59/4
1     2-59/4
2     3-59/4
3     1-59/4
4     2-59/4
5     3-59/4
6     1-59/4
7     2-59/4
8     3-59/4
9     1-59/4
10    2-59/4
11    3-59/4
12    1-59/4
13    2-59/4
dtype: object

Понимание списка должно сделать это -

n=14
fixed_str = "-59/4"
list1 = [f"{i%3+1}{fixed_str}" for i in range(n)]

Выход

['1-59/4',
 '2-59/4',
 '3-59/4',
 '1-59/4',
 '2-59/4',
 '3-59/4',
 '1-59/4',
 '2-59/4',
 '3-59/4',
 '1-59/4',
 '2-59/4',
 '3-59/4',
 '1-59/4',
 '2-59/4']
n = 14
lis_num = []

# Initialize a counter to track rows
counter = 1

# Initialize interval
interval = "1-59/4"

# Iterate over the range
for x in range(n):
    # Append the current interval to lis_num
    lis_num.append(f"{counter} {interval}")
    
    # Increment the counter
    counter += 1
    
    # Check if it's time to update the first element
    if counter % 3 == 1:
        # Update the first element of the interval
        interval = "1-59/4"
    elif counter % 3 == 2:
        # Update the second element of the interval
        interval = "2-59/4"
    else:
        # Update the third element of the interval
        interval = "3-59/4"

# Print each element of lis_num on a new line
for item in lis_num:
    print(item)

Выход

1 1-59/4
2 2-59/4
3 3-59/4
4 1-59/4
5 2-59/4
6 3-59/4
7 1-59/4
8 2-59/4
9 3-59/4
10 1-59/4
11 2-59/4
12 3-59/4
13 1-59/4
14 2-59/4

Другие вопросы по теме