Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2011 10:01:15

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

Доброе время суток. Возникла проблема в создание списка.

def Zlst1():
lst1 = []
y=1
print "Zapolnenei spiska 1:"
while y==1:
x = input()
if x == "end":
y=0
else:
lst1.append(x)
вот так создаю список, но выдает ошибку:

Zapolnenei spiska 1:
Panasonic
Traceback (most recent call last):
File "C:\Users\Сергей\Documents\NetBeansProjects\spiski\src\spiski.py", line 15, in <module>
lst1 = Zlst1()
File "C:\Users\Сергей\Documents\NetBeansProjects\spiski\src\spiski.py", line 8, in Zlst1
x = input()
File "<string>", line 1, in <module>
NameError: name 'Panasonic' is not defined



Офлайн

#2 Янв. 28, 2011 10:02:50

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

списки и работа с ними

Функция input() Выполняет подачу кода на исполнение интерпретатору. Используйте raw_input().



Офлайн

#3 Янв. 28, 2011 10:15:33

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

Спасибо. Есть еще вопрос. Есть ли такая функция для списков чтоб выполняла следующее: удаляла элементы из первого списка которые присутсвуют во втором списке.



Офлайн

#4 Янв. 28, 2011 10:44:43

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

списки и работа с ними

ZigertoN
Спасибо.  Есть еще вопрос. Есть ли такая функция для списков чтоб выполняла следующее: удаляла элементы из первого списка которые присутсвуют во втором списке.
Встроенной функции нет. Если все элементы внутри списка уникальны, то можете воспользоваться множествами:
>>> x = [1,2,3,4,5]
>>> y = [1,2,3]
>>> x = set(x)
>>> y = set(y)
>>> x-y
set([4, 5])
Если нет - пишите вручную, либо исключайте соответствующие значения при формировании списка.



Офлайн

#5 Янв. 28, 2011 10:57:31

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

Написал вручную:

def Zlst3(lst1,lst2): 
lst3 = []
n = 0
m = 0
x = 1
while x == 1:
while lst1[0+n] == lst2[0+m]:
m=m+1
if lst2[0+m] == lst2[-1]:
n = n+1
m = 0
lst3.append(lst1[0+n])
n = n+1
if lst1[0+n] == lst1[-1]:
x = 0
print lst3
return lst3
так то вроде все правельно но не работает. А так же смущает :
lst2[0+m] == lst2[-1]
если элементы повторяющиеся то так делать нельзя, подскажите как сказать ему чтоб когда доходит до последнего элемента он тормозил.



Офлайн

#6 Янв. 28, 2011 11:17:26

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

списки и работа с ними

зачем все усложнять

for element in lst1:
if element in lst2:
....
PROFIT



Офлайн

#7 Янв. 28, 2011 11:25:43

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

непонял, обьясните пожалуйсто



Офлайн

#8 Янв. 28, 2011 12:10:56

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

списки и работа с ними

lst3 = [element for element in lst1 if not element in lst2]



Офлайн

#9 Янв. 28, 2011 12:58:42

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

Спасибо, работает



Офлайн

#10 Фев. 16, 2011 14:32:43

ZigertoN
От:
Зарегистрирован: 2010-10-27
Сообщения: 44
Репутация: +  0  -
Профиль   Отправить e-mail  

списки и работа с ними

Добрый день. Подскажите как изминить код чтоб можно было создавать вложеные списки

def Zlst():
lst = []
y=1
while y==1:
x = raw_input()
if x == "end":
y=0
else:
lst.append(x)
return lst
например чтоб ввод осушествлялся так
x=
1
2
3
4,5
6
7
print x
[1, 2, 3, [4, 5], 6, 7]
а еще вопрос будет ли ниже написаная функция работать со вложеными списками? если нет то подскажи как реализовать чтоб работала

lst3 = [element for element in lst1 if not element in lst2]



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version