|
楼主 |
发表于 2024-10-11 15:49:21
|
显示全部楼层
列表推导式 List Comprehensions 查询创建列表 两个例子 iterable(可迭代对象)
列表推导式是一种简洁的方式来创建和操作列表。
new_list = [expression for item in iterable if condition]
高亮写法:
new_list = [expression for item in iterable if condition]
列表推导式(List Comprehensions) 来查询值,创建列表。
【**】上面学习了在整数之间查询特定的值——除以2的整数,我们再来做练习。
练习一:
使用列表推导式,查找5到26之间被3整除的数字。
VS Code里面代码书写如下:
# divisible_by_3
# 使用列表推导式,查找5到26之间被3整除的数字
divisible_by_3 = [num for num in range(5,27) if num % 3] == 0
# 打印结果
print("在5到26之间能被3整除的数字:", divisible_by_3)
结果为:
C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/divisible_by_3.py在5到26之间能被3整除的数字: [6, 9, 12, 15, 18, 21, 24]
说明运行成功。
练习二:
【**】利用这个列表推导式(List Comprehensions),我们来做一个有点挑战性的题目。在复杂的文字环境下测试创建列表。
考虑到阿拉伯语字母,写在不同的位置,比如中间,结尾,开头,字母的写法变化了。
现在来推导出,四个阿拉伯语单词里,含有一个共同的字母吗?
在VS code里输入,并且运行。
# 定义阿拉伯语单词列表
arabic_words = ['مكتب', 'كلمة', 'كتاب', 'حمار']
# 查找含有字母 'م' 的单词
common_letter = 'م'
words_with_common_letter = [word for word in arabic_words if common_letter in word]
# 打印结果
print("含有字母 'م' 的单词:", words_with_common_letter)
在VS code里云心这个结果是:
C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/arabic_words.py
含有字母 'م' 的单词: ['مكتب', 'كلمة', 'حمار']
检查下,四个阿拉伯语单词,还真的是只有三个单词里有字母'م',说明有一个是不匹配的。
那么,我们再看看四个单词:
正确的单词及其含义:- مكتب (maktab 书桌) - 以 م 开头。
- كلمة (kalima 词) - 中间含有 م。
- حمار (himar 驴) - 中间含有 م。
- كتاب (kitab 书) - 以 ب 结尾,单词里没有字母 م。
尽管Python初学,能做到这些,也是很有意思吧?下面的内容,加大了难度,不要急,慢慢看。
如果我们进一步想要展示字母 م 在每个单词中的不同形式,我们可以定义一个字典,将字母的不同形式与单词关联起来。
在上面的代码基础上,我们接着写:
# 定义字母的不同形式
letter_forms = {
'beginning': 'مـ',
'middle': 'ـمـ',
'end': 'ـم'
}
# 创建一个结果列表,显示字母在每个单词中的形式
results = [
(word, letter_forms['beginning'] if word.startswith(common_letter) else
letter_forms['middle'] if common_letter in word[1:-1] else
letter_forms['end'])
for word in words_with_common_letter
]
# 打印每个单词和对应的字母形式
for word, form in results:
print(f"单词: {word},字母形式: {form}")
这样,输入的结果是:
C:/Users/Administrator/AppData/Local/Programs/Python/Python313/python.exe c:/Users/Administrator/letter_forms.py
含有字母 'م' 的单词: ['مكتب', 'كلمة', 'حمار']
单词: مكتب,字母形式: مـ
单词: كلمة,字母形式: ـمـ
单词: حمار,字母形式: ـمـ
总结- 使用列表推导式可以简洁地找出包含特定字母的单词。
- 通过条件判断,可以进一步分析字母在单词中的不同位置和形式。
你可以根据这个思路尝试编写代码。
Python基础知识 注解:
在Python中,iterable(可迭代对象)是指任何可以被遍历(iterated)的对象。这包括:
- 列表(lists)
- 元组(tuples)
- 字符串(strings)
- 字典(dictionaries)
- 集合(sets)
- 生成器(generators)
可迭代对象的特点:- 遍历:可迭代对象可以通过循环(如 for 循环)逐个访问其元素。
- 使用场景:在列表推导式中,iterable 是指你希望通过条件筛选或转换生成新列表的对象。
示例
假设你有一个列表,可以用它作为可迭代对象:
numbers = [1, 2, 3, 4, 5]
# 使用列表推导式生成一个新列表,包含原列表中的每个数字的平方
squared_numbers = [num ** 2 for num in numbers]
print(squared_numbers) # 输出: [1, 4, 9, 16, 25]
在这个例子中,numbers 是一个可迭代对象,num 是遍历 numbers 中的每个元素。
用日常用语来说,iterable(可迭代对象)就是指当前可以被操作或遍历的所有对象。
更简单的说法:可迭代对象就是任何你可以逐个访问其元素的东西。例如:
一个列表中的数字
一串字符中的字母
一组字典中的键值对
总结来说,在编程中,当我们说一个对象是可迭代的,意思就是我们可以: 用循环或者其他方法去“取出”这个对象里面的元素。
总结
在列表推导式 new_list = [expression for item in iterable if condition] 中,iterable 代表你要遍历的对象,item 是当前遍历到的元素。通过使用条件,可以在生成新列表时筛选出符合特定条件的元素。
|
|