#python #list
#python #Список
Вопрос:
Предположим, что существует список кортежей:
for something in x.something()
print(something)
и он возвращает
('a', 'b')
('c', 'd')
('e', 'f')
('g', 'h')
('i', 'j')
И я создал два других списка, содержащих определенные элементы из x.something():
y = [('a', 'b'), ('c', 'd')]
z = [('e', 'f'), ('g', 'h')]
Итак, я хочу присвоить кортежи из x.something() новому списку на основе y и z с помощью
newlist = []
for something in x.something():
if something in 'y':
newlist.append('color1')
elif something in 'z':
newlist.append('color2')
else:
newlist.append('color3')
Я хотел бы, чтобы новый список выглядел так:
['color1', 'color1', 'color2', 'color2', 'color3']
Но у меня есть
TypeError: 'in <string>' requires string as left operand, not tuple
Что пошло не так и как это исправить?
Комментарии:
1. вы имеете в виду
something == "y"
или y список, о котором мы не знаем?2. они все равно не получат этот результат, поскольку в значениях, которые они нам показали, нет ни одного значения «y» или «z»
3. Привет, Ironkey! 🙂 Я пытался использовать x.something(), чтобы сделать историю короче, но это может быть плохой идеей. На самом деле это g.edges() из Networkx-пакета, а «что-то» на самом деле является ребрами, соединяющимися между двумя узлами. Итак, в этом примере есть 5 ребер между a и b, c и d, e и f и т.д. …
Ответ №1:
Я думаю, вы хотите получить if something in y
вместо if something in 'y'
, потому что это два отдельных списка, а не строки:
newlist = []
for something in x.something():
if something in y:
newlist.append('color1')
elif something in z:
newlist.append('color2')
else:
newlist.append('color3')
Комментарии:
1. Большое спасибо, Васиф, ваш комментарий решил мою проблему 🙂 это было именно то, что пошло не так 🙂
Ответ №2:
Вы должны удалить кавычки из if something in 'y'
, потому что предполагается, что вы проверяете, есть ли something
в строке 'y'
. То же самое для z
.
Ответ №3:
попробуйте это:
t = [('a', 'b'),
('c', 'd'),
('e', 'f'),
('g', 'h'),
('i', 'j')]
y = [('a', 'b'), ('c', 'd')]
z = [('e', 'f'), ('g', 'h')]
new_list = []
for x in t:
if x in y:
new_list.append('color1')
elif x in z:
new_list.append('color2')
else:
new_list.append('color3')
print(new_list)
вывод:
['color1', 'color1', 'color2', 'color2', 'color3']