Извлечение специальных элементов из массива в Python

1

Я работаю над Visual Studio о проекте Python 3. Пользователь вводит номер 01102003060d8090a305 Затем я 01102003060d8090a305 номера: ['01', '10', '20', '03', '06', '0d', '80', '90', 'a3', '05'] и взять четвертый элемент списка с помощью этого кода:

dynamic_array = [ ]
hexdec = input("Enter even number ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
print(dynamic_array)
print(dynamic_array[3])

Итак, я хочу, чтобы третий элемент из 03 был целым числом, а после шестого элемента массива show with continou три элемента выглядели следующим образом: 03 80 90 a3 Если целое число изменяется, оно по-прежнему идет после шестого элемента, но отображает только количество элементов, включая целое число например, 02 80 90 Есть ли все-таки сделать это?

Теги:
python-3.x

3 ответа

0
Лучший ответ

Вы можете использовать isdigit(), чтобы проверить, есть ли у вас число или буква в вашем массиве:

dynamic_array = [ ]
hexdec = input("Enter even number ");
strArray = [hexdec[idx:idx+2]  for idx in range(len(hexdec)) if idx%2 == 0]
dynamic_array = strArray
if dynamic_array[3].isdigit():
    endValue = dynamic_array[3]
    print dynamic_array[3]
    for i in range(6,6+int(endValue)):
        print dynamic_array[i]
  • 0
    Прежде всего, спасибо за ваш ответ @Fabrice, ваше решение кажется правильным, но я хочу иметь динамический интервал около ´ (6: 9) ´, например, если пользователь введет «04», то оно изменится »(6:10) '
  • 0
    Хорошо, @Asell, вы можете поместить результат в переменную (используется как int) для динамического изменения вывода (ответ отредактирован)
Показать ещё 3 комментария
0
num = dynamic_array[3]
integer_array = [num]
for i in dynamic_array[6:]:
    if i.isdigit():
        integer_array.append(i)
print(' '.join(integer_array[:int(num) + 1]))
  • 0
    Прежде всего, спасибо за решение @CK, но это не займет a3
  • 0
    Хорошо @ Asell, если вы просто имеете в виду, что, когда 3-й элемент равен 03 , выходные данные могут быть буквами и целыми числами, в то время как когда 3-й элемент является другим целым числом, таким как 02 , в выходных данных должны быть только целые числа?
0

Вы можете dynamic_array список dynamic_array и использовать общую распаковку для формирования нового списка:

n = dynamic_array[3]
print([n, *dynamic_array[6 : 6 + int(n)]])
  • 0
    Прежде всего, спасибо за ваш ответ @ blhsing ваше решение является правильным, но как мне взять вывод вместо ['03', '80', '90', 'a3'] , только выглядит так: 03 80 90 a3
  • 0
    Если вы хотите вывести 03 80 90 a3 вы можете сделать: ' '.join((n, *dynamic_array[6 : 6 + int(n)]))
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню